Flutter本地化日期字符串转换为DateTime

3

我想把日期字符串*转换为DateTime对象。

  • 字符串中包含土耳其语的月份名称,如下所示

我的字符串(来自API)- “10 Mart 2021 16:38”

我的区域设置 - 土耳其[‘tr’]

我该如何转换?

谢谢!

3个回答

2
尝试以下操作。仅 en_US 区域设置不需要任何初始化。其他区域设置必须进行初始化。有关更多信息,请访问 https://pub.dev/documentation/intl/latest/intl/DateFormat-class.html
import 'package:intl/intl.dart';
import 'package:intl/date_symbol_data_local.dart';

// Then somewhere in your code:
initializeDateFormatting('tr_TR', null).then((_) {
      final dateAsString = '10 Mart 2021 16:38';
      final format = new DateFormat('dd MMMM yyyy HH:mm', 'tr_TR');
      final date = format.parse(dateAsString);
});

它可以工作。非常感谢! - Ferhat Ismayilov

1

我花了很多时间试图解决这个问题,最终找到了一个可行的解决方案:

  1. Need to parse the date string ONLY with English locale:

     final dateTime = Intl.withLocale('en_US', () {
         const stringExample = 'Wed, 23 Mar 2022 13:48:05';
         const format = 'EEE, dd MMM yyyy hh:mm:ss';
         return DateFormat(format).parse(stringExample);
     });
    
  2. Localise your date:

     initializeDateFormatting('tr', null).then((_) {
         final localisedDate = DateFormat('dd MMM yyyy').format(dateTime);
     });
    

如果为MaterialApp设置了所需的语言环境,您可以直接在第2步中格式化日期,而无需使用initializeDateFormatting方法。


1

试用Jiffy包,它还支持土耳其本地化,因为它在Inlt之上运行,使得处理日期和时间更加容易

将您的区域设置为土耳其区域

await Jiffy.setLocale("tr");

然后将您的字符串日期时间解析为Jiffy

DateTime dateTime = Jiffy.parse("10 Mart 2021 16:38", pattern: "dd MMMM yyyy hh:mm").dateTime; // 2021-03-10 16:38:00.000

或者简单地说

Jiffy.setLocale("tr").then((value) {
    DateTime dateTime = Jiffy.parse("10 Mart 2021 16:38", "dd MMMM yyyy hh:mm").dateTime;
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接