我如何在颤动中像这样 2019-07-08T10:37:28Z 格式化日期

Posted

技术标签:

【中文标题】我如何在颤动中像这样 2019-07-08T10:37:28Z 格式化日期【英文标题】:How do i format date like this 2019-07-08T10:37:28Z in flutter 【发布时间】:2020-03-07 23:30:40 【问题描述】:

我想像 2019-07-08T10:37:28Z 这样格式化日期,但我不知道该怎么做,谁能帮我解决这个问题。

这是日期选择器的代码

final format = new DateFormat.yMMMEd('en-US');

return DateTimeField(
      format: format,
      autocorrect: true,
      autovalidate: false,
      controller: _bspLicenseExpiryDate,
      readOnly: true,
      validator: (date) => date == null ? 'Please enter valid date' : null,
      decoration: InputDecoration(
          labelText: "Expiry Date",
          hintText: "Expiry Date",
          prefixIcon: Icon(
            FontAwesomeIcons.calendar,
            size: 24,
          )),
      onShowPicker: (context, currentValue) 
        return showDatePicker(
          context: context,
          firstDate: DateTime.now(),
          initialDate: currentValue ?? DateTime.now(),
          lastDate: DateTime(2100),
        );
      ,
    );

【问题讨论】:

DateTime 有一个 .toIso8601String() 方法,但它会打印小数秒。试试print(DateTime.now().toUtc().toIso8601String()); 【参考方案1】:

你可以用这个:

var now = new DateTime.now();
var dateFormatted = DateFormat("yyyy-MM-ddTHH:mm:ss").format(now);

您必须在字符串末尾添加“Z”,因为它是用于格式化 TimeZone 的 Char。

你可以在那里查看 -> https://pub.dev/documentation/intl/latest/intl/DateFormat-class.html

【讨论】:

您可以/应该引用非格式字符 - 这允许您添加 Z。var dateFormatted = DateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").format(DateTime.now()); @Caffo17 "Z" 表示表示的时间是UTC!【参考方案2】:

你可以参考这里的 DateFormat 类https://api.flutter.dev/flutter/intl/DateFormat-class.html 它有一个构造函数,你可以在其中放置你的模式。

    final format = new DateFormat('yyyy-MM-ddTHH:mm:ssZ','en-US');

【讨论】:

【参考方案3】:

它是UTC 类型的ISO 8601 格式日期时间。

下面的方法来解析这个日期格式,如果有异常则返回今天的默认值:

String formatDateTimeFromUtc(dynamic time)
  try 
    return new DateFormat("yyyy-MM-dd hh:mm:ss").format(new DateFormat("yyyy-MM-dd'T'HH:mm:ss").parse(time));
   catch (e)
    return new DateFormat("yyyy-MM-dd hh:mm:ss").format(new DateTime.now());
  

【讨论】:

以上是关于我如何在颤动中像这样 2019-07-08T10:37:28Z 格式化日期的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Knex 中像查询一样逃避 %?

如何在颤动中从其他页面的块流中获取数据

如何在Objective C中像Marquee Tag一样为UIImage设置动画

如何在推送路由颤动上创建淡入淡出过渡?

如何在颤动中处理文件的空安全性?

如何在颤动中创建这样的自定义 ListView 项目?