也许你迷茫,但是我想说,在你迷茫的同时,保持本心,过好今天就好。


学习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-2DateTime date1 = DateTime(2021, 1, 2);//创建时间对象 2021-1-3DateTime date2 = DateTime(2021, 1, 3);// 时间比较  date1 是否在 date2之前  truebool isBefore = date1.isBefore(date2);print('isBefore $isBefore'); // 在之前// 时间比较  date1 是否在 date2之后  falsebool isAfter = date1.isAfter(date2);print('isAfter $isAfter'); // 时间比较  date1 与 date2是否相等 falsebool 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-2DateTime date1 = DateTime(2021, 1, 2);//创建时间对象 2021-1-3DateTime date2 = DateTime(2021, 1, 3);//计算两个时间差 date1 - date2 Duration difference = date1.difference(date2);print('时间差 difference $difference'); //  -24:00:00.000000int 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语言基础相关推荐

  1. 2021超详细的Dart语言基础总结~你值得拥有~

    文章目录 前言:dart语言简介 一.变量 1.1.类型推导 1.2.默认值 1.3.Final 和 const修饰符 二.内建类型 2.1.数据类型 2.2.集合的相关操作 三.函数 3.1.函数的 ...

  2. java 解析日期格式_日期/时间格式/解析,Java 8样式

    java 解析日期格式 自Java 几乎 开始以来,Java开发人员就通过java.util.Date类(自JDK 1.0起)和java.util.Calendar类(自JDK 1.1起 )来处理日期 ...

  3. 日期/时间格式/解析,Java 8样式

    自Java 几乎 开始以来,Java开发人员就通过java.util.Date类(自JDK 1.0起)和java.util.Calendar类(自JDK 1.1起 )来处理日期和时间. 在这段时间内, ...

  4. Dart语言基础,看完这篇文章就够了(二)

    文章内容是我在学习Flutter过程中对知识点的梳理和总结.如有不对的地方,欢迎指出. 本文承接Dart语言基础,看完这篇文章就够了(一),进一步了解Dart语法知识. 文章目录 1 流程控制语句 2 ...

  5. Dart语言基础Map、List、Set操作合辑

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天. ** 你可能需要 CSDN 网易云课堂教程 掘金 EDU学院教程 知乎 Flutter系列文章 Flutter完全采用 ...

  6. 给 Android 开发者的 Dart 语言基础

    本文基于官方的文档,整理出 Dart 语言中与 Java 和 Kotlin 语言类似和特有的部分,因此本文的读者需要具备一定的 Java 及 Kotlin 语言基础,相信大家读完本文就可以看懂大部分的 ...

  7. Flutter(一)介绍、Dart语言简介

    目录 Flutter介绍 跨平台技术简介 1. 跨平台自绘引擎 2. 高性能 Flutter 为什么选择 Dart 语言? 1.开发效率高. 2.高性能. 3.快速内存分配. 4.类型安全和空安全. ...

  8. Flutter 学习 - Dart 语言基础

    文章目录 前言 一.Dart 概述 Dart 重要的概念 二.变量与基本数据类型 三.函数 四.运算符 五.流程控制语句 六.异常处理 七.面向对象 构造函数 继承类 抽象类 枚举类型 八.泛型 九. ...

  9. python datetime日期时间去掉 时分秒

    一:场景1 输入:datetime格式日期时间 输出:datedate格式日期 方法:datetime.datetime.date()直接转换,关键是改变日期的格式从而改变日期时间的显示. impor ...

最新文章

  1. 虚拟纹理与几何图像技术
  2. extract ,eval的用法
  3. web socket 心跳包的实现方案
  4. mysql中in的用法总结_MySQL中的find_in_set()函数使用技巧心得与应用场景总结
  5. python tcp协议加代理_python实现简单的TCP代理服务器
  6. 自己动手写js分享插件 [支持https] (QQ空间,微信,新浪微博。。。)
  7. 二叉树的一些leetcode题目+python(c++)
  8. 如何用C++来计算大数字乘法
  9. 通用职责分配软件原则之5-控制器原则
  10. 常见的工作流框架 Activity JBPM
  11. 移动端页面rem布局出现横向滚动条的修复
  12. 什么是产品的愿景—从一篇博文中学得到
  13. SLAM和三维重建中的SFM区别
  14. 控制台应用程序转成MFC程序错误—OcrRec.exe触发一个触点,原因可能是堆被破坏
  15. EXCEL生成SQL脚本
  16. 中国大陆身份证正则表达式(严格验证省份和日期)
  17. 微信推送封面尺寸_【新媒体干货】微信公众号封面图设计规范试行版
  18. 【Excel 教程系列第 15 篇】Excel 中的简单排序(升序 / 降序)、多条件排序、按颜色排序、自定义排序、以及巧用“升序“制作工资条
  19. LTE TDD和FDD介绍
  20. 亚马逊云科技——户外广告传媒行业数字化转型的摆渡者

热门文章

  1. 文末送书 | 自动机器学习(AutoML):方法、系统与挑战
  2. AAAI 2020 Oral | 华科提出TANet:提升点云3D目标检测的稳健性
  3. 复旦提出GaitSet算法,步态识别的重大突破!
  4. Python 基础总结 6 张图 带你学习Python
  5. 教程|YOLOX目标检测ncnn实现
  6. 前沿 | 使用Transformers进行端到端目标识别
  7. 30篇「CVPR2020」最新论文抢先看!看计算机视觉2020在研究什么?
  8. 三次样条曲线拟合及Matlab/Python实现
  9. ENVI5.3安装教程|带资源
  10. c语言贪吃蛇咬到尾巴,【图片】C语言小游戏~贪吃蛇【c语言吧】_百度贴吧