Flutter:类型“DateTime”不是类型“String”的子类型

fivyi3re  于 2022-12-19  发布在  Flutter
关注(0)|答案(4)|浏览(193)
Text(
        DateTime.parse(documents[index]['createdAt']
                                  .toDate()
                                  .toString()) ??
                              'default',
)

我正在尝试从firestore获取日期。我将DateTime.now()存储在firestore的createdIn中。

3htmauhk

3htmauhk1#

因为两者的格式不同。
1.步骤1:您可以创建DateFormat。
1.步骤2:使用“DateFormat”. parse()。
试着阅读这个:https://help.talend.com/r/6K8Ti_j8LkR03kjthAW6fg/atMe2rRCZqDW_Xjxy2Wbqg

6yoyoihd

6yoyoihd2#

在这里,它期望类型为“String”,但我们将其作为“DateTime”传递,这是不正确的。
以默认的“en_US”格式设置日期格式不需要任何初始化。
https://api.flutter.dev/flutter/intl/DateFormat-class.html
因此,我们只需将其格式化为:

var dateTime = DateTime.now()
DateFormat.E().format(dateTime)

E()是Flutter中DateFormat的构造函数,引用周的前3个字母
可用的构造函数可以参考官方文档:
https://api.flutter.dev/flutter/intl/DateFormat-class.html#constructors

注意:以下是用于DateTime库~ intl intl的版本:^0.18.0

https://pub.dev/packages/intl

zkure5ic

zkure5ic3#

如果它是一个时间戳字段,将它转换为时间戳。如果你需要它作为一个日期时间,使用一个.toDate。不要通过字符串处理它...完全没有必要。

7xzttuei

7xzttuei4#

也许能帮到你

String? changeDateFormatWithInput(String? currentDate, currentFormat,
  requiredFormat) {
String? date;

try {
  if (currentDate != null && currentDate.isNotEmpty) {
    DateTime tempDate =
    new DateFormat(currentFormat).parse(currentDate, true);
    date = DateFormat(requiredFormat).format(tempDate.toLocal());
    return date;
  }
} catch (e) {
  print(e);
  return null;
}
return date;

}

相关问题