# 日期时间
DateTime class (opens new window) 和 Duration class (opens new window)
# 当前时间
DateTime D = new DateTime.now();
print(D); // 当前时间
2024-10-12 16:10:34.935247
1
2
3
4
5
2
3
4
5
# 指定时间
DateTime D = new DateTime(2022,10,28,8,30);
print(D); // 指定时间
2022-10-28 08:30:00.000
1
2
3
4
5
2
3
4
5
# 指定UTC时间
DateTime D = new DateTime.utc(2022,10,28,8,30);
print(D); // 指定UTC时间
2022-10-28 08:30:00.000Z
1
2
3
4
5
2
3
4
5
# 解析时间
DateTime D1 = DateTime.parse('2018-10-10 09:30:30Z');
DateTime D2 = DateTime.parse('2018-10-10 09:30:30+0800');
print(D1); // UTC 时区
print(D2); // 国际标准ISO
2018-10-10 09:30:30.000Z
2018-10-10 01:30:30.000Z
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 时间增减量
DateTime D = new DateTime.now();
print(D);
print(D.add(new Duration(minutes: 5)));
print(D.add(new Duration(minutes: -5)));
2024-10-12 16:10:34.948547
2024-10-12 16:15:34.948547
2024-10-12 16:05:34.948547
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 比较时间
DateTime D1 = new DateTime(2018, 10, 1);
DateTime D2 = new DateTime(2018, 10, 31);
print('2018-10-1 在 2018-10-31之前:' + D1.isBefore(D2).toString());
print('2018-10-1 在 2018-10-31之前:' + D1.isAfter(D2).toString());
print('2018-10-1 和 2018-10-31相同:' + D1.isAtSameMomentAs(D2));
2018-10-1 在 2018-10-31之前:true
2018-10-1 在 2018-10-31之后:false
2018-10-1 和 2018-10-31相同:false
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 时间差
DateTime D1 = new DateTime(2022, 10, 1);
DateTime D2 = new DateTime(2022, 10, 28);
Duration DF = D1.difference(D2);
print('2022-10-1 距离 2022-10-28:' + DF.inDays.toString() + '天');
print('2022-10-1 距离 2022-10-28:' + DF.inHours.toString() + '小时');
2022-10-1 距离 2022-10-31:-30天
2022-10-1 距离 2022-10-31:-720小时
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 时间戳
DateTime D = new DateTime.now();
print(D.millisecondsSinceEpoch);
print(D.microsecondsSinceEpoch);
1728721661611
1728721661611133
1
2
3
4
5
6
7
2
3
4
5
6
7