首页 > 解决方案 > 如何在 Dart 的 DateTime 中获取 N 天前?

问题描述

subtract()方法,但文档说它不知道夏令时,这使得它在这种情况下几乎没有用,或者在任何其他情况下,除非程序员不知道 24 小时内有多少毫秒。

我在想两种方法:

获取当月的日期,然后从中减去 N,如果小于 1,则在适当的情况下减去月份和年份,并将日期设置为任何月份的最后一天

或者

从当天的中午减去 N 天,然后得到当天的开始日期

有没有更简单/更好的方法来做到这一点?

标签: dart

解决方案


您可能应该尝试将两个 DateTimes 都转换为 UTC(标准化),然后调用 difference()。这会将其转换为一个不错的、简单的持续时间,您可以根据需要将其转换为小时、天、月或其他任何时间。

DateTime one = somedatetime.toUtc();
DateTime two = someotherdatetime.toUtc();
Duration diff = one.difference(two);
//Then just convert...
return diff.inDays;

推荐阅读