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 中解析 JSON 日期

Flutter DateTime日期转换

Flutter: DateTime 作为改造方法中的参数; DateTime ISO 8061 序列化;改造日期 iso8061 格式

在 Flutter(Dart)中将字符串解析为 DateTime [重复]

如何解析 DateTime 并将其转换为 RFC 822 日期时间格式?

日期转换(用DateTime的ParseExact方法解析特殊的日期时间)(转)