DateTime
创建时间
创建DateTime类型的时间
main(List<String> args) {
var nowTime =new DateTime.now();
print(nowTime); // 2022-01-07 13:57:45.691191
var currentTime = new DateTime(2022, 01, 07, 11, 12);
print(currentTime); // 2022-01-07 11:12:00.000
// 创建UTC时间
var utcTime = new DateTime.utc(2022, 01, 07, 11, 12);
print(utcTime); // 2022-01-07 11:12:00.000Z
print(new DateTime.now().toIso8601String()); // 2022-01-07T13:56:04.230147
print(new DateTime.now().toUtc()); // 2022-01-07 05:57:00.388021Z
}
解析时间 字符串转DateTime
解析后返回DateTime类型
main(List<String> args) {
var d1 = DateTime.parse('2022-01-08 09:30:30Z'); // ISO
print(d1); // 2022-01-08 09:30:30.000Z
var d2 = DateTime.parse('2022-01-08 09:30:30+0800'); //8601
print(d2); // 2022-01-08 09:30:30.000Z
var d3 = DateTime.parse('2022-01-08'); //8601
print(d3); // 2022-01-08 09:30:30.000
var d4 = DateTime.parse('2022-01-08 09:30:30'); //8601
print(d4); // 2022-01-08 00:00:00.000
}
时间戳
main(List<String> args) {
var now = new DateTime.now();
print(now.millisecondsSinceEpoch); // 单位毫秒,13位时间戳 1641535256264
print(now.microsecondsSinceEpoch); // 单位微秒,16位时间戳 1641535256264787
}
时间戳转换成日期
转换后返回DateTime类型
main(List<String> args) {
var nowTime = new DateTime.now();
var a1 = nowTime.millisecondsSinceEpoch; // 13位时间戳
print(DateTime.fromMillisecondsSinceEpoch(a1)); // 2022-01-07 14:06:47.069
var a2 = nowTime.microsecondsSinceEpoch; // 16位时间戳
print(DateTime.fromMicrosecondsSinceEpoch(a2)); // 2022-01-07 14:06:47.069254
}
时间增减量
main(List<String> args) {
var d1 = DateTime.now();
print(d1.add(new Duration(minutes: 5))); //加五分钟
print(d1.add(new Duration(minutes: -5))); //减五分钟
}
时间比较
main(List<String> args) {
var d1 = new DateTime(2022, 01, 07);
var d2 = new DateTime(2022, 01, 08);
print(d1.isBefore(d2)); // d1在d2之前 true
print(d1.isAfter(d2)); // d1在d2之后 false
var d3 = DateTime.now();
var d4 = d3.add(new Duration(milliseconds: 30));
print(d3.isAtSameMomentAs(d4)); //相等时间比较 false
}
时间差
main(List<String> args) {
var d1 = new DateTime(2022, 01, 01);
var d2 = new DateTime(2022, 01, 02);
var difference = d1.difference(d2);
print([difference.inDays, difference.inHours]); //d1与d2相差的天数与小时 [-1, -24]
}
时间差
main(List<String> args) {
var d1 = new DateTime(2022, 01, 01);
var d2 = new DateTime(2022, 01, 02);
var difference = d1.difference(d2);
print([difference.inDays, difference.inHours]); //d1与d2相差的天数与小时 [-1, -24]
}
获取年、月、日、星期、时、分、秒、毫秒、微妙
// year、month、day、weekday、hour、minute、second、millisecond、microsecond
main(List<String> args) {
var nowTime = DateTime.now();
print(nowTime); // 2022-01-07 14:30:50.427729
print( nowTime.year ); // 2022
print( nowTime.month ); // 1
print( nowTime.day ); // 7
print( nowTime.weekday ); // 5
print( nowTime.hour ); // 14
print( nowTime.minute ); // 30
print( nowTime.second ); // 50
print( nowTime.millisecond ); // 427
print( nowTime.microsecond ); // 729
}
获取本地时区简码
main(List<String> args) {
var d1 = DateTime.now();
print(d1.timeZoneName); // CST
var d2 = DateTime.now().toUtc();
print(d2.timeZoneName); // UTC
var d3 = DateTime.now().toLocal();
print(d3.timeZoneName); // CST
}
返回UTC与本地时差(小时数)
main(List<String> args) {
var d1 = DateTime.now();
print(d1); // 2022-01-07 14:36:06.921993
print(d1.timeZoneOffset); // 8:00:00.000000
}
自定义时间格式化
main(List<String> args) {
//padLeft(int width,String padding):如果字符串长度小于width,在左边填充padding
var date = new DateTime.now();
String timestamp = "${date.year.toString()}-${date.month.toString().padLeft(2,'0')}-${date.day.toString().padLeft(2,'0')} ${date.hour.toString().padLeft(2, '0')}:${date.minute.toString().padLeft(2, '0')}";
print(timestamp); // 2022-01-07 14:01
}
Duration
计算时间跨度
main(List<String> args) {
Duration timeRemaining = new Duration(days:1, hours:14, minutes:45);
print(timeRemaining); // 38:45:00.000000
}