我了解如何使用DateTime.now()
和${DateFormat.yMMMMEEEEd().format(addTimeHere)}
格式化常规toIso8601String()
的格式。我可能用错了。但是当我使用DateTime.now().toIso8601String()
时,它会显示全职时间 2019-12-03T17:50:23.476164 ,据我了解,这就是toIso8601String()
的本质,但如何获取它显示为 1:22 PM ,而不是整个 2019-12-03T17:50:23.476164 ?
答案 0 :(得分:1)
@ Nokia3310,我不知道有任何内置函数可以将Iso8601String()转换为本地时间,因此我认为您需要反序列化DateTime.now().toIso8601String()
。您可以使用build_value包进行反序列化。这就是获取当地时间的方法,
class MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Test'),
),
body: Padding(
padding: EdgeInsets.all(20.0),
child: Center(
child: Text(new DateFormat.jm().format(DateTime.parse(getTime().toString()).toLocal()), style: TextStyle(fontSize: 18.0),),
)
)
));
}
getTime() {
var serializers =
(Serializers().toBuilder()..add(Iso8601DateTimeSerializer())).build();// Instantiate serializer for Iso8601
var serialized = DateTime.now().toIso8601String();
var specifiedType = const FullType(DateTime);
return serializers.deserialize(serialized, specifiedType: specifiedType);
}
}
屏幕截图:
希望这会有所帮助。
答案 1 :(得分:-1)
DateFormat.yMMMMEEEEd().format(DateTime.now())