Jai*_*eri 2 datetime date-difference dart flutter
我正在寻找一种方法来DateTime解析两个日期,以显示差异。我希望它的格式为:“X 年,Y 个月,Z 天”。
对于 JS,我们有momentjs库和以下代码::
var a = moment([2015, 11, 29]);
var b = moment([2007, 06, 27]);
var years = a.diff(b, 'year');
b.add(years, 'years');
var months = a.diff(b, 'months');
b.add(months, 'months');
var days = a.diff(b, 'days');
console.log(years + ' years ' + months + ' months ' + days + ' days');
// 8 years 5 months 2 days
Run Code Online (Sandbox Code Playgroud)
是否有类似的dart库可以帮助实现这个用例?
您正在寻找的是 Dart DateTime 类 您可以在 moment.js 中接近您想要的内容
main() {
var a = DateTime.utc(2015, 11, 29);
var b = DateTime.utc(2007, 06, 27);
var years = a.difference(b);
print(years.inDays ~/365);
}
Run Code Online (Sandbox Code Playgroud)
DateTime 没有 inYears 或 inMonths 选项,但这就是打印中划分年份的原因。差异函数以秒为单位返回差异,因此您必须自己处理几天。
我认为使用 DateTime 无法轻松完成您想要的操作。因此,您可以使用https://pub.dev/packages/time_machine包,它在日期时间处理方面非常强大:
import 'package:time_machine/time_machine.dart';
void main() {
LocalDate a = LocalDate.today();
LocalDate b = LocalDate.dateTime(DateTime(2022, 1, 2));
Period diff = b.periodSince(a);
print("years: ${diff.years}; months: ${diff.months}; days: ${diff.days}");
}
Run Code Online (Sandbox Code Playgroud)
小时/分钟/秒精度:
import 'package:time_machine/time_machine.dart';
void main() {
LocalDateTime a = LocalDateTime.now();
LocalDateTime b = LocalDateTime.dateTime(DateTime(2022, 1, 2, 10, 15, 47));
Period diff = b.periodSince(a);
print("years: ${diff.years}; months: ${diff.months}; days: ${diff.days}; hours: ${diff.hours}; minutes: ${diff.minutes}; seconds: ${diff.seconds}");
}
Run Code Online (Sandbox Code Playgroud)
您可以根据总天数计算:
void main() {
DateTime a = DateTime(2015, 11, 29);
DateTime b = DateTime(2007, 06, 27);
int totalDays = a.difference(b).inDays;
int years = totalDays ~/ 365;
int months = (totalDays-years*365) ~/ 30;
int days = totalDays-years*365-months*30;
print("$years $months $days $totalDays");
}
Run Code Online (Sandbox Code Playgroud)
结果是:8 5 7 3077
| 归档时间: |
|
| 查看次数: |
3101 次 |
| 最近记录: |