首页 > 解决方案 > 为什么我的 DateTime 出现此错误?飘飘然

问题描述

我试图从 firebase 女巫获取数据是 String 类型。喜欢这种格式(yyyy-MM-dd – kk:mm),我试图将字符串解析为日期时间,但它给了我错误请谁能告诉我如何解决这个问题......

代码 :

 var retriveDateTime = database_Reference
      .child("users")
      .child(_wifiObject.macAddress)
      .child(DateFormat('dd-MM-yyyy').format(DateTime.now()));

 if (retriveDateTime != null) {
      retriveDateTime.once().then((value) {
        String formatedtime = value.value['startingTime'];
        startup_time = DateTime.parse(formatedtime);
      });
      insertDataToDatabase();
    } else {
      startup_time = DateTime.now();
      insertDataToDatabase();
    }

我得到的错误:

E/flutter ( 7155): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: FormatException: Invalid date format
E/flutter ( 7155): 2021-07-29 – 23:46
/flutter ( 7155): #1      _MyHomePageState.initState.<anonymous closure>.<anonymous closure>

包:alfurat_app/main.dart:16

当我单击错误时,它会将我带到这里:

 startup_time = DateTime.parse(formatedtime);

标签: firebaseflutterdatetimefirebase-realtime-databaseflutter-test

解决方案


根据官方文档。很少有字符串格式支持。检查日期时间/parse.html

在您的情况下DateFormat('dd-MM-yyyy')不支持。替换为DateFormat('yyyy-MM-dd').

接受的字符串示例:

"2012-02-27"
"2012-02-27 13:27:00"
"2012-02-27 13:27:00.123456789z"
"2012-02-27 13:27:00,123456789z"
"20120227 13:27:00"
"20120227T132700"
"20120227"
"+20120227"
"2012-02-27T14Z"
"2012-02-27T14+00:00"
"-123450101 00:00:00 Z": in the year -12345.
"2002-02-27T14:00:00-0500": Same as "2002-02-27T19:00:00Z"


推荐阅读