使用Dart,我从API获取UTC日期,并try 获取与当前日期的分钟差.

void main() {   
    
    DateTime chkDate = DateTime.parse("2024-04-20 23:10:06");
    DateTime now = DateTime.now().toUtc();
    final difference = now.difference(chkDate).inMinutes;
  
    print(chkDate);
    print(now);
    print(difference.toString());  
}

无论我做什么,分钟总是一个小时太多(我处于格林尼治标准时间,UTC+1),所以我很确定这与此有关,但我无法计算出来.

这是使用上面代码在当地时间00:21输出的结果.它将当前日期显示为UTC,但相差仍然是71,而我需要1

2024-04-20 23:10:06.000
2024-04-20 23:21:11.578Z
71

推荐答案

在比较之前,您需要将两个时间转换为同一时区.

71分钟是您当地时区(UTC+1)添加的一小时偏差,解析chkDate时没有考虑该偏差.如果比较相同的小时值,将返回1分钟差异.

如果API以UTC形式返回日期,请确保以UTC形式解析日期.try 将Z添加到API中的时间戳,请参阅下面我的示例(简化,您可能需要采取不同的做法):

DateTime chkDate = DateTime.parse("2024-04-20 23:10:06Z");

Dart相关问答推荐

对字母数字字符串数组进行排序

Dart 中 ThemeData 类的 copyWith() 方法

如何在flutter中管理switch小部件的原生外观

如何在flutter中加载数据之前显示进度对话框?

如何在Flutter中制作视频缩略图?

flutter: 使用提供程序时,状态在热重载时丢失

Dart中有没有类似python 字典(dictionary) struct ?

Mockito - 在空安全迁移后存根方法

Flutter 以编程方式触发 FutureBuilder

如何使我的对话框可滚动?

Flutter模糊叠加

Flutter:主题未应用于文本小部件

如何在 Flutter 中使用 Provider 显示来自 ChangeNotifier 的错误

Firebase 手机身份验证Flutter crash崩溃

Dart 中的动态类方法调用

Dart 交互/访问数据库

Dart:你如何让 Future 等待 Stream?

具有 Maps 的 Null 感知运算符

如何在 Dart SDK 0.4+ 中使用 setInterval/setTimeout

Dart 中的异步可迭代映射