如何格式化DateTime.now()。toIso8601String()

时间:2019-12-04 18:24:50

标签: flutter

我了解如何使用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

2 个答案:

答案 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);
  }
}

屏幕截图:

Screenshot

希望这会有所帮助。

答案 1 :(得分:-1)

DateFormat.yMMMMEEEEd().format(DateTime.now())