【问题标题】:unable to convert string date in Format yyyyMMddHHmmss to DateTime dart无法将 yyyyMMddHHmmss 格式的字符串日期转换为 DateTime dart
【发布时间】:2018-12-05 03:49:35
【问题描述】:

我有一个包含日期的字符串,格式为 yyyyMMddHHmmss(例如)(20180626170555),我正在使用以下代码将其转换为日期时间

dateTimeFromString(json['dateTime'], "yyyyMMddHHmmss")

例外是:

FormatException: Trying to read MM from 20180623130424 at position 14

可能是什么原因?

【问题讨论】:

    标签: dart flutter


    【解决方案1】:

    docs,你需要单Mmonth in year

    dateTimeFromString(json['dateTime'], "yMdHms")
    

    【讨论】:

    • dart 文档不是很清楚! : Number:最小位数。较短的数字在此数量上补零(例如,如果“m”产生“6”,“mm”产生“06”)。
    • 您的解决方案给出:FormatException: Trying to read M from 20180623130424 at position 14
    【解决方案2】:

    intl DateFormat 无法处理您的输入字符串,因为它没有任何分隔符。整个字符串作为年份被消耗。但是DateTime.parse 确实(几乎)解决了这个问题。它恰好期望您拥有的格式(再次,几乎)。

    parse 可接受的样式之一是 20120227T132700,它的区别只是 T 日期/时间分隔符。

    试试这个:

    String date = '20180626170555';
    String dateWithT = date.substring(0, 8) + 'T' + date.substring(8);
    DateTime dateTime = DateTime.parse(dateWithT);
    

    【讨论】:

      【解决方案3】:

      Flutter 中如何将 String 转换为 Date 和 Date 为 string 的基本信息。看看下面的链接

      https://quickstartflutterdart.blogspot.com/2018/10/how-to-convert-string-to-date-and-date.html

      可能会对其他人有所帮助。

      【讨论】:

        【解决方案4】:

        您可以使用 DateFormat 将 DateTime 从字符串解析为对象

        // With en_US locale by default
        var newDateTimeObj = new DateFormat().add_yMd().add_Hms().parse("7/10/1996 10:07:23")
        // with a defined format
        var newDateTimeObj2 = new DateFormat("dd/MM/yyyy HH:mm:ss").parse("10/02/2000 15:13:09")
        

        查看文档here

        【讨论】:

          【解决方案5】:

          DateTime.parse("string date here") 只接受一些格式化的字符串。检查以下接受字符串的示例。

          • "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":在-12345年。
          • "2002-02-27T14:00:00-0500":同"2002-02-27T19:00:00Z"

          => 字符串到日期时间

          DateTime tempDate = new DateFormat("yyyy-MM-dd hh:mm:ss").parse(savedDateString);
          

          => 日期时间到字符串

          String date = DateFormat("yyyy-MM-dd hh:mm:ss").format(DateTime.now());
          

          参考链接:

          【讨论】:

            【解决方案6】:

            "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" 转换为'MM/dd/yyyy hh:mm a'

            date = '2021-01-26T03:17:00.000000Z';
            DateTime parseDate =
                new DateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").parse(date);
            var inputDate = DateTime.parse(parseDate.toString());
            var outputFormat = DateFormat('MM/dd/yyyy hh:mm a');
            var outputDate = outputFormat.format(inputDate);
            print(outputDate)
            

            输出 2021 年 1 月 26 日上午 03:17

            【讨论】:

              【解决方案7】:

              将字符串转换为日期格式的简单方法是

                print(DateTime.parse('2020-01-02')); // 2020-01-02 00:00:00.000
                print(DateTime.parse('20200102')); // 2020-01-02 00:00:00.000
                print(DateTime.parse('-12345-03-04')); // -12345-03-04 00:00:00.000
                print(DateTime.parse('2020-01-02 07')); // 2020-01-02 07:00:00.000
                print(DateTime.parse('2020-01-02T07')); // 2020-01-02 07:00:00.000
                print(DateTime.parse('2020-01-02T07:12')); // 2020-01-02 07:12:00.000
                print(DateTime.parse('2020-01-02T07:12:50')); // 2020-01-02 07:12:50.000
                print(DateTime.parse('2020-01-02T07:12:50Z')); // 2020-01-02 07:12:50.000Z
                print(DateTime.parse('2020-01-02T07:12:50+07')); // 2020-01-02 00:12:50.000Z
                print(DateTime.parse('2020-01-02T07:12:50+0700')); // 2020-01-02 00:12:50.00
                print(DateTime.parse('2020-01-02T07:12:50+07:00')); // 2020-01-02 00:12:50.00
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2016-01-10
                • 2018-02-23
                • 1970-01-01
                • 2016-12-27
                • 2014-03-11
                • 1970-01-01
                相关资源
                最近更新 更多