【问题标题】:Flutter DateFormat Invalid date formatFlutter DateFormat 无效的日期格式
【发布时间】:2021-09-01 12:23:18
【问题描述】:

我有这样的字符串String dt = '04-09-2021 - 15:00'

我想把它转换成本地时区
我的代码是:

if(dt != 'Not Available'){
      return DateFormat('dd-MM-yyyy - HH:mm')
          .format(DateTime.parse(dt).toLocal())
          .toString();
    }else{
      return dt;
    }

但我得到错误:Invalid date format 04-09-2021 - 15:00

【问题讨论】:

    标签: flutter datetime dart datetime-format


    【解决方案1】:

    你应该使用解析,而不是格式,格式函数接收日期,但你没有日期,你有一个字符串,使用:

    DateFormat('dd-MM-yyyy - HH:mm').parse(dt);
    

    【讨论】:

    • 没有解析到当地时间
    【解决方案2】:

    在这里我写了一个日期格式化程序并将其转换为本地时间。也可以随意格式化。

    // call getFormattedDateFromFormattedString function in Text
           Center(
                    child: Text(getFormattedDateFromFormattedString(
                        currentFormat: "dd-MM-yyyy - HH:mm",
                        desiredFormat: "dd MMM yyyy HH:mm a",
                        value: "04-09-2000 - 15:00")),
                  )
    
    // date fomatter function
    String getFormattedDateFromFormattedString(
        {@required String currentFormat,
        @required String desiredFormat,
        String value}) {
      String formattedDate = "";
      if (value != null || value.isNotEmpty) {
        try {
          DateTime dateTime = DateFormat(currentFormat).parse(value, true).toLocal();
          formattedDate = DateFormat(desiredFormat).format(dateTime);
        } catch (e) {
          print("$e");
        }
      }
      // print("Formatted date time:  $formattedDate");
      return formattedDate.toString();
    }
    

    输出:

    注意:我的时区 GMT+6.0

    【讨论】:

      猜你喜欢
      • 2022-01-07
      • 2022-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-07
      相关资源
      最近更新 更多