我希望我的日期时间总是保存为以下格式:yMMMd
即 2021 年 3 月 30 日
问题:
当我格式化我的日期时间时,它格式化为字符串。当我尝试将其解析回DateTime时,我收到错误并且没有成功。
我在寻找解决这个问题的好方法时遇到了问题。
这是可能的还是我必须满足于保存为字符串?
编辑
尝试了所有推荐的方法,也尝试了许多其他方法,但也不起作用。我想知道Intl包日期格式是否无法解析回DateTime?这可能是我的问题。有人吗?
请看我打印语句和错误,看看什么是成功的,什么不是。
我正在尝试的日期选择器:
Future<void> _selectDate(BuildContext context) async {
final DateTime picked = await showDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate: DateTime(2015, 8),
lastDate: DateTime(2101));
if (picked != null)
setState(() {
print('------ Picked date: $picked');
var dateString = '';
final formattedDate = DateFormat.yMMMd().format(picked);
var parsedDate = DateTime.parse(formattedDate); // Does not work...
print('------- Parsed date: $parsedDate');
dateString = formattedDate;
print('------ String date: $dateString');
expenseDate = formattedDate as DateTime;
print('------ Formatted date: ${formattedDate.toString()}');
});
}
错误:
flutter: ------ Picked date: 2021-03-31 00:00:00.000
[VERBOSE-2:ui_dart_state.cc(186)] Unhandled Exception: FormatException: Invalid date format
Mar 31, 2021
#0 DateTime.parse (dart:core/date_time.dart:322:7)
#1 _AddExpenseButtonState._selectDate.<anonymous closure> (package:fp_provider_demo_one/widgets/add_expense_button.dart:48:35)
#2 State.setState (package:flutter/src/widgets/framework.dart:1267:30)
#3 _AddExpenseButtonState._selectDate (package:fp_provider_demo_one/widgets/add_expense_button.dart:44:7)
<asynchronous suspension>
使用< code>parse方法从字符串中获取< code>DateTime。
final df = DateFormat.yMMMd();
final dateString = df.format(picked);
final expenseDate = df.parse(dateString);
https://pub.dev/documentation/intl/latest/intl/DateFormat/parse.html
因此,您希望格式化您的日期时间,并在以后将其解析回日期时间实例
试试Jiffy包,可能会有所帮助。见下文
从您的时间选择器中选择时间的示例
DateTime picked = DateTime(2021, 3, 21); // just a random datetime
要格式化,请尝试以下操作
final formattedDate = Jiffy(picked).yMMMd; // Mar 21, 2021
将其解析回日期时间
var parsedDate = Jiffy(formattedDate, "MMM dd, yyyy").dateTime; // 2021-03-21 00:00:00.000
Jiffy运行在Intl之上,你也可以用它做很多很酷的事情,试试吧
点击按钮后,我尝试在< code>Text小部件中显示当前的< code>DateTime。下面的作品,但我想改变格式。 目前的做法 结果 问题 如何删除部分?
我有一个格式为“Mon May 31 2021 23:59:59 GMT 0000(协调世界时)”的日期,但需要将其转换为本地时区并解析为日期时间格式。我该怎么做?
本文向大家介绍.NET Framework 格式:自定义DateTime格式,包括了.NET Framework 格式:自定义DateTime格式的使用技巧和注意事项,需要的朋友参考一下 示例
在我的项目中,我使用HorizontalPicker第三方库来选择日期。然而,当我在文本视图中显示DateTime变量的值时,我很难改变它的格式。 我将如何格式化这是更容易为用户阅读的东西,如"10-5-2020" 代码:
问题内容: 我有一个字符串“ ”,我想将其格式化为“ ”,正确的模式是什么? 我已经尝试了很多,并用谷歌搜索,但仍然找不到正确的模式。 编辑:我正在寻找Joda-Time ,而不是Java的SimpleDateFormat。 问题答案: 请注意,在JAVA SE 8中引入了新的java.time(JSR-310)包。 这代替了Joda时间,建议Joda用户进行迁移。有关JAVA SE≥8格式化日期