我想把日期字符串*转换为DateTime对象。
- 字符串中包含土耳其语的月份名称,如下所示
我的字符串(来自API)- “10 Mart 2021 16:38”
我的区域设置 - 土耳其[‘tr’]
我该如何转换?
谢谢!
我想把日期字符串*转换为DateTime对象。
我的字符串(来自API)- “10 Mart 2021 16:38”
我的区域设置 - 土耳其[‘tr’]
我该如何转换?
谢谢!
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);
});
我花了很多时间试图解决这个问题,最终找到了一个可行的解决方案:
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);
});
Localise your date:
initializeDateFormatting('tr', null).then((_) {
final localisedDate = DateFormat('dd MMM yyyy').format(dateTime);
});
如果为MaterialApp
设置了所需的语言环境,您可以直接在第2步中格式化日期,而无需使用initializeDateFormatting
方法。
试用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;
});