【问题标题】:How to convert 24/01/2023 into 2023-01-24如何将 24/01/2023 转换为 2023-01-24
【发布时间】:2023-01-10 03:19:42
【问题描述】:

我尝试通过执行以下代码来转换日期

  DateFormat('yyyy-MM-dd')
              .add_yMMMd()
              .parse((state as SlotRequestPopUpDataLoadedState).date)
              .toString(),
        );

但它会抛出错误

Unhandled Exception: FormatException: Trying to read - from 09/01/2023 at position 3

【问题讨论】:

    标签: flutter dart datetime exception format


    【解决方案1】:

    看起来您正在尝试使用 add_yMMMd 格式解析格式为“yyyy-MM-dd”的日期字符串。这会导致 FormatException,因为这两种格式不兼容。

    要解析“yyyy-MM-dd”格式的日期字符串,您应该将 parse 方法与 DateFormat("yyyy-MM-dd") 格式化程序一起使用。用这个:

    DateTime date = DateFormat("yyyy-MM-dd").parse("2023-01-09");
    

    【讨论】:

    • 我认为这不是真正的原因,如果您删除.add_yMMMd(),您仍然会遇到该异常。
    【解决方案2】:

    您遇到此问题是因为您正在尝试解析包含 - 的日期,但您的日期包含 /。假设这是你的约会对象:

    var date = '24/01/2023';
    

    你可以这样转换它:

    var Dtime = DateFormat('dd/MM/yyyy').parse(date);
    
    print('newDate = ${DateFormat('yyyy-MM-dd').format(Dtime)}'); //newDate = 2023-01-24
    

    【讨论】:

    • 使用replaceAll 是愚蠢的。只需在用于解析的格式字符串中使用/
    • @jamesdlin 是的,谢谢。我编辑它。
    猜你喜欢
    • 2023-02-22
    • 2023-01-17
    • 2023-01-13
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    • 2023-01-26
    • 2020-07-10
    • 2015-05-19
    相关资源
    最近更新 更多