flutter DateTime 日期时间详细解析 Dart语言基础
Posted 早起的年轻人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flutter DateTime 日期时间详细解析 Dart语言基础相关的知识,希望对你有一定的参考价值。
也许你迷茫,但是我想说,在你迷茫的同时,保持本心,过好今天就好。
学习Dart语言,首先我们需要使用到一个语言调试工具 DartPad
在 Dart 中,DateTime 对象代表某个时刻,时区可以是 UTC 或者本地时区。
1 DateTime 的常用操作
DateTime 对象可以通过若干构造函数创建:
// 获取当前时间对象
DateTime now = DateTime.now();
// 创建的时间对象为 2021年1月1日
DateTime y2k = DateTime(2021);
// 创建的时间对象为 2021年1月2日
y2k = DateTime(2021, 1, 2);
// 创建的时间对象为 2021年1月1日 UTC
y2k = DateTime.utc(2021);
// 根据毫秒来创建时间对象
y2k = DateTime.fromMillisecondsSinceEpoch(946684800000,
isUtc: true);
// 将 ISO 8601 类型的字符串时间解析为时间对象.
y2k = DateTime.parse('2000-01-01T00:00:00Z');
创建对象时,DateTime对象锚定在UTC时区或当前计算机的本地时区。一旦创建,DateTime对象的值和时区都不能更改。
可以使用属性来获取DateTime对象的各个单元
// 获取当前时间对象
DateTime now = DateTime.now();
//获取对应的毫秒
int time = now.microsecondsSinceEpoch;
print("毫秒 $time");
//获取当前时间的年
int year = now.year;
//获取当前时间的月
int month = now.month;
//获取当前时间的日
int day = now.day;
//获取当前时间的时
int hour = now.hour;
//获取当前时间的分
int minute = now.minute;
//获取当前时间的秒
int millisecond = now.millisecond;
print("组合 $year-$month-$day $hour:$minute:$millisecond");
2 DateTime 时间比较操作
DateTime 对象可以做直接比较,有isBefore、isAfter、isAtSameMomentAs、compareTo 等方法
//创建时间对象 2021-1-2
DateTime date1 = DateTime(2021, 1, 2);
//创建时间对象 2021-1-3
DateTime date2 = DateTime(2021, 1, 3);
// 时间比较 date1 是否在 date2之前 true
bool isBefore = date1.isBefore(date2);
print('isBefore $isBefore'); // 在之前
// 时间比较 date1 是否在 date2之后 false
bool isAfter = date1.isAfter(date2);
print('isAfter $isAfter');
// 时间比较 date1 与 date2是否相等 false
bool isAtSameMomentAs = date1.isAtSameMomentAs(date2);
print('isAtSameMomentAs $isAtSameMomentAs');
//两个时间相比较 大于返回1;等于返回0;小于返回-1。
int compareTo = date1.compareTo(date2);
print('compareTo $compareTo'); // -1
3 DateTime 时间差计算
计算时间差的方式还是比较多的,在这里我们直接使用 DateTime 的difference 方法来对时间DateTime进行相减操作
//创建时间对象 2021-1-2
DateTime date1 = DateTime(2021, 1, 2);
//创建时间对象 2021-1-3
DateTime date2 = DateTime(2021, 1, 3);
//计算两个时间差 date1 - date2
Duration difference = date1.difference(date2);
print('时间差 difference $difference'); // -24:00:00.000000
int inMilliseconds = difference.inMilliseconds ;
int intHours = difference.inHours;
int inDays = difference.inDays;
print('时间差 毫秒 $inMilliseconds');
print('时间差 小时 $intHours');
print('时间差 天 $inDays');
我这里是 2021-2-1 减去 2021-2-2 ,所以相减出来是负数,我们可以使用 Duration 对象的 abs() 求绝对值的方法来获取正数
//计算两个时间差 date1 - date2
Duration difference = date1.difference(date2).abs();
4 字符串与日期相互转换
字符串转日期
DateTime date1 = DateTime.parse("2021-01-01");
print(date1);//2021-01-01 00:00:00.000
日期转指定格式的字符串时间
//获取当前的时间
DateTime date = 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);//2021-12-05 21:52
完毕
小编也写了几本书,如果你有兴趣可以去看看
以上是关于flutter DateTime 日期时间详细解析 Dart语言基础的主要内容,如果未能解决你的问题,请参考以下文章
Flutter: DateTime 作为改造方法中的参数; DateTime ISO 8061 序列化;改造日期 iso8061 格式
在 Flutter(Dart)中将字符串解析为 DateTime [重复]