【问题标题】:Flutter DateFormat Invalid date formatFlutter DateFormat 无效的日期格式
【发布时间】:2021-09-01 12:23:18
【问题描述】:
我有这样的字符串String dt = '04-09-2021 - 15:00'
我想把它转换成本地时区
我的代码是:
if(dt != 'Not Available'){
return DateFormat('dd-MM-yyyy - HH:mm')
.format(DateTime.parse(dt).toLocal())
.toString();
}else{
return dt;
}
但我得到错误:Invalid date format 04-09-2021 - 15:00
【问题讨论】:
标签:
flutter
datetime
dart
datetime-format
【解决方案1】:
你应该使用解析,而不是格式,格式函数接收日期,但你没有日期,你有一个字符串,使用:
DateFormat('dd-MM-yyyy - HH:mm').parse(dt);
【解决方案2】:
在这里我写了一个日期格式化程序并将其转换为本地时间。也可以随意格式化。
// call getFormattedDateFromFormattedString function in Text
Center(
child: Text(getFormattedDateFromFormattedString(
currentFormat: "dd-MM-yyyy - HH:mm",
desiredFormat: "dd MMM yyyy HH:mm a",
value: "04-09-2000 - 15:00")),
)
// date fomatter function
String getFormattedDateFromFormattedString(
{@required String currentFormat,
@required String desiredFormat,
String value}) {
String formattedDate = "";
if (value != null || value.isNotEmpty) {
try {
DateTime dateTime = DateFormat(currentFormat).parse(value, true).toLocal();
formattedDate = DateFormat(desiredFormat).format(dateTime);
} catch (e) {
print("$e");
}
}
// print("Formatted date time: $formattedDate");
return formattedDate.toString();
}
输出:
注意:我的时区 GMT+6.0