【问题标题】:How do i format date like this 2019-07-08T10:37:28Z in flutter我如何在颤动中像这样 2019-07-08T10:37:28Z 格式化日期
【发布时间】: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());

标签: datetime flutter dart format flutter-layout


【解决方案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());
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-04
      • 2016-10-27
      • 2020-06-22
      • 2018-11-28
      • 2020-10-15
      • 1970-01-01
      相关资源
      最近更新 更多