首页 > 解决方案 > 我们可以在 dart/flutter 中格式化没有 Intl Package 的 DateTime 吗?

问题描述

我想知道我们是否可以在颤振项目中DateTime不使用包进行格式化。Intl

我想做的是如下:

  1. 比较 2 个没有时间的日期,在if case.
  2. datetime将 api 中的字符串格式化为给定的格式,例如yMMMMd.
  3. Time仅从给定的dateTime字符串中获取。

我已经用intl包做到了这一点,但我们可以在没有包依赖的情况下做到这一点吗?

标签: datetimeflutterdartpackage

解决方案


是的,您可以在没有 Intl 包的情况下格式化 DateTime,Intl 包刚刚准备好使用方法,但是您可以创建自己的格式,以便您需要制作月份列表,也许还有列表天,并且当您收到日期为来自 API 的字符串,您必须使用 DateTime.parse。

我希望这个例子能让你清楚

  List<String> monthList = [
    'January',
    'February',
    'March',
    'April',
    'May',
    'June',
    'July',
    'August',
    'September',
  ];
  void yMMMMdDateFromate(String stringDateTime) {
    DateTime dateTime = DateTime.parse(stringDateTime);
    String dateTimeyMMMMdDateFromate =
        '${monthList[dateTime.month - 1]} ${dateTime.day}, ${dateTime.year} ';
    print(dateTimeyMMMMdDateFromate);
  }

此函数接收字符串 DateTime 并将其打印为 yMMMMd 格式。

对于比较 2 个日期,在使用 DateTime.parse 方法将字符串转换为 DateTime 之后,您可以使用

dateTime.isAfter(dateTime2);
dateTime.isBefore(dateTime2);
dateTime.isAtSameMomentAs(dateTime2);

推荐阅读