【问题标题】:Difference duration between two dates - Dart两个日期之间的差异持续时间 - Dart
【发布时间】:2020-10-13 02:02:47
【问题描述】:

我正在尝试找出 Dart 中各个单位的两个日期之间的持续时间差异。我正在查看jiffy,因为它受到moment.js 和moment.js 的启发,可以通过以下sn-p 实现:

const dateOne= moment('3/29/2020','M/D/YYYYY'); //29th March 2020
const currentDate = moment();
// get the difference between the moments
const diff = currentDate.diff(dateOne);
//express as a duration
const diffDuration = moment.duration(diff);

const diffDuration = {
  months: diffDuration.months(), //6 months
  days: diffDuration.days(), //14 days
  hours: diffDuration.hours(), //21 hours
  minutes: diffDuration.minutes(), //55 minutes
  seconds: diffDuration.seconds(), //44 seconds
}

但是使用 Jiffy 我只能找到差异,而不是差异持续时间

var jiffy1 = Jiffy(); //get current time
var jiffy2 = Jiffy("2020-03-29", "yyyy-MM-dd");
var _months = jiffy1.diff(jiffy2, Units.MONTH); //6 
var _days = jiffy1.diff(jiffy2, Units.DAY); //197 days
var _hours = jiffy1.diff(jiffy2, Units.HOUR); //284,99 hours
var _seconds = jiffy1.diff(jiffy2, Units.SECOND );
var _minutes = jiffy1.diff(jiffy2, Units.MINUTE);

有什么方法可以在 Dart (Flutter) 中实现该功能,它不必与包一起使用。我确实考虑过 DateTime 类,但它似乎也给出了相同的输出,只是可用的单位更少

【问题讨论】:

  • 这个有很多答案,这里有一个:stackoverflow.com/questions/52713115/… Datetime 类和 Duration 类是要走的路
  • @GrahamD 肯定会给出差异,但我正在寻找差异持续时间?我不确定我的措辞是否正确。假设我的开始日期是 3 月 1 日,结束日期是 4 月 1 日。这两者之间的差异是 32 天。但我希望最终输出为 1 个月 1 天。
  • 好的,我想我明白了。也许这个pub.dev/packages/simple_moment 和这个pub.dev/packages/date_util 有帮助?
  • @GrahamD 谢谢!我会给他们一个机会并在我继续时更新这个问题
  • @GrahamD 得到了答案!

标签: flutter datetime dart momentjs


【解决方案1】:

非常感谢 this question 上的 Alex,我已经使用 time_machine 包解决了这个问题

import 'package:time_machine/time_machine.dart';
LocalDateTime a = LocalDateTime.now();
LocalDateTime b = LocalDateTime.dateTime(DateTime(2020, 3, 29, 0, 0, 0));
Period diff = a.periodSince(b);
var _months = diff.months;
var _days = diff.days;
var _hours = diff.hours;
var _seconds = diff.seconds;
var _minutes = diff.minutes;
print("years: ${diff.years}; months: ${diff.months}; days: ${diff.days}; hours: ${diff.hours}; minutes: ${diff.minutes}; seconds: ${diff.seconds}");

如果您还想要时差,请不要忘记使用LocalDateTime 而不仅仅是LocalDate

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 2023-03-24
    • 2018-10-12
    • 1970-01-01
    • 2011-10-29
    • 2018-11-23
    相关资源
    最近更新 更多