gpt4 book ai didi

android - 如何在 flutter 中解析日期时间

转载 作者:行者123 更新时间:2023-12-03 04:42:31 25 4
gpt4 key购买 nike

我从服务器得到低于日期时间

   "datetime":"2020-07-17T03:18:31.177769-04:00"
我正在使用下面的代码来解析以从上述日期获取时间
      var format = DateFormat('HH:mm a');
debugPrint('LocalTime ${format.parse(timeZoneData.datetime)}');
我低于异常
flutter: Error 123: FormatException: Trying to read : from 2020-07-17T03:22:09.959577-04:00 at position 5
我想像这样显示上述时间 凌晨 3 点 18 分
谁能知道如何在 flutter 中解析日期时间
如果需要更多信息,请告诉我。提前致谢。您的努力将不胜感激。

最佳答案

你的问题是你试图解析 "2020-07-17T03:18:31.177769-04:00"与模式 "HH:mm a"这是不可能的,因为模式甚至不接近提供的字符串。
相反,您真正想要的是将日期时间字符串解析为 DateTime反对并使用您的DateFormat转换 DateTime变成 String .由于您提供的日期时间字符串被格式化为 dart 可以立即解析的格式,我们可以使用 DateTime.parse .
可以在这里看到一个例子:

import 'package:intl/intl.dart';

void main() {
const dateTimeString = '2020-07-17T03:18:31.177769-04:00';
final dateTime = DateTime.parse(dateTimeString);

final format = DateFormat('HH:mm a');
final clockString = format.format(dateTime);

print(clockString); // 07:18 AM
}
关于时钟,默认情况下,如果在字符串中提供了时区(如示例),它将默认将日期时间解析为 UTC。
您可以通过执行以下操作输出本地时间:
final clockString = format.format(dateTime.toLocal());
但是这个解决方案当然只有在您自己的计算机具有时区偏移“-04:00”时才有效。但这将是自 DateTime 的内部状态以来最正确的解决方案。是正确的。
如果您想将日期时间字符串直接解析为本地时间,我认为最简单的方法是删除日期时间字符串的时区部分,例如:
final dateTime = DateTime.parse(dateTimeString.replaceFirst(RegExp(r'-\d\d:\d\d'), ''));
这将给出 DateTime包含本地时间并将根据需要打印您的时间戳的对象:
import 'package:intl/intl.dart';

void main() {
const dateTimeString = '2020-07-17T03:18:31.177769-04:00';
final dateTime =
DateTime.parse(dateTimeString.replaceFirst(RegExp(r'-\d\d:\d\d'), ''));

final format = DateFormat('HH:mm a');
final clockString = format.format(dateTime);

print(clockString); // 03:18 AM
}

关于android - 如何在 flutter 中解析日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62949069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com