将 DateFormat 与区域设置一起使用会导致 FormatException:尝试从 2020-08-07 15:00 在位置 0 处读取 yyyy

问题描述 投票:0回答:2

当我使用语言环境为

DateFormat
时,我可以在 flutter 中使用
'ar'
,即
RTL
语言环境..这是我的代码:

String finalDatetime = '$dateString $timeString';
DateTime tempDate = new DateFormat("yyyy-MM-dd hh:mm").parse(finalDatetime);
String formattedDate = Intl.getCurrentLocale() == 'en' ? DateFormat('dd-MM-yyyy – hh:mm').format(tempDate)
:DateFormat.yMMMd('ar').format(tempDate);

我在这一行收到错误:

DateTime tempDate = new DateFormat("yyyy-MM-dd hh:mm").parse(finalDatetime);

错误

FormatException: Trying to read yyyy from 2020-08-07 15:00 at position 0

注释

  • 当语言环境设置为
    'en'
  • 时效果完美
  • 从数据库中获取日期字符串,该数据库始终以
    2020-08-07 15:00
  • 的形式发送
android ios date datetime dart
2个回答
7
投票

正如

Jamesdlin
在他的评论中提到的那样,使用
Intl.withLocale
解决了问题

DateTime tempDate =Intl.withLocale('en', () => new DateFormat("yyyy-MM-dd hh:mm").parse(finalDatetime));

0
投票

有关此问题的任何更新,因为我希望它也能与“ar”一起使用。

© www.soinside.com 2019 - 2024. All rights reserved.