【发布时间】:2021-07-06 04:06:01
【问题描述】:
在 Flutter 中,如何获得与用户(或设备)语言设置相匹配的格式正确的日期字符串?
例如:
在英语中,日期通常写为“Friday April 10”,在德语中通常写为“Freitag 10. April”。
根据docs,必须调用initializeDateFormatting() 才能启用来自DateFormat 的本地化结果。在代码中是这样的:
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:intl/date_symbol_data_local.dart';
class DateTimeDisplay extends StatefulWidget {
DateTimeDisplay({Key? key}) : super(key: key);
@override
_DateTimeDisplay createState() => _DateTimeDisplay();
}
class _DateTimeDisplay extends State<DateTimeDisplay> {
@override
void initState() {
super.initState();
initializeDateFormatting().then((_) => setState(() {}));
}
@override
Widget build(BuildContext context) {
DateTime now = new DateTime.now();
String dayOfWeek = DateFormat.EEEE().format(now);
String dayMonth = DateFormat.MMMMd().format(now);
String year = DateFormat.y().format(now);
return Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Text(dayOfWeek, textAlign: TextAlign.center),
Text(dayMonth, textAlign: TextAlign.center),
Text(year, textAlign: TextAlign.center),
],
);
}
}
问题是,DateFormat.EEEE().format(now); 总是以英文返回日期。同DateFormat.MMMMd().format(now);,只回复英文月份和日期/月份顺序。
您有什么想法吗?或者如何说服颤振返回正确本地化的日期?非常感谢您的建议。谢谢。
【问题讨论】:
标签: flutter localization