news 2026/7/31 7:42:59

Flutter---时间核心类

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Flutter---时间核心类

DateTime - 基础时间类

// 创建 DateTime 对象 DateTime now = DateTime.now(); // 当前时间 DateTime specific = DateTime(2024, 1, 15); // 指定日期 (年,月,日) DateTime detailed = DateTime(2024, 1, 15, 10, 30); // 指定日期时间 (年,月,日,时,分) DateTime utc = DateTime.utc(2024, 1, 15); // UTC 时间 DateTime parsed = DateTime.parse("2024-01-15 10:30:45"); // 解析字符串 // 常用属性 print(now.year); // 年: 2024 print(now.month); // 月: 1-12 print(now.day); // 日: 1-31 print(now.hour); // 时: 0-23 print(now.minute); // 分: 0-59 print(now.second); // 秒: 0-59 print(now.millisecond);// 毫秒 print(now.microsecond);// 微秒 print(now.weekday); // 星期几: 1(星期一)-7(星期日) print(now.millisecondsSinceEpoch); // 时间戳(毫秒) print(now.microsecondsSinceEpoch); // 时间戳(微秒) // 时区相关 print(now.timeZoneName); // 时区名: "CST" print(now.timeZoneOffset); // 时区偏移: 8:00:00.000000 print(now.isUtc); // 是否是UTC时间

Duration - 时间段类

// 创建 Duration Duration duration1 = Duration(days: 1, hours: 2, minutes: 30); Duration duration2 = Duration(seconds: 90); // 1分30秒 Duration duration3 = Duration(milliseconds: 1500); // 1.5秒 // 常用属性 Duration d = Duration(hours: 2, minutes: 30); print(d.inDays); // 0 (不足1天) print(d.inHours); // 2 print(d.inMinutes); // 150 print(d.inSeconds); // 9000 print(d.inMilliseconds);// 9000000 // 运算 Duration sum = duration1 + duration2; Duration diff = duration1 - duration2; Duration multiplied = duration1 * 2; Duration divided = duration1 ~/ 2; bool isGreater = duration1 > duration2;

基本时间格式化

import 'package:intl/intl.dart'; DateTime now = DateTime.now(); //.format() 用于将DateTime对象格式化为指定格式的字符串 // 日期格式化 DateFormat dateFormat = DateFormat("yyyy-MM-dd"); String formattedDate = dateFormat.format(now); // "2024-01-15" // 时间格式化 DateFormat timeFormat = DateFormat("HH:mm:ss"); String formattedTime = timeFormat.format(now); // "10:30:45" // 日期时间格式化 DateFormat dateTimeFormat = DateFormat("yyyy-MM-dd HH:mm:ss"); String formattedDateTime = dateTimeFormat.format(now); // "2024-01-15 10:30:45" // 本地化格式化 DateFormat localeFormat = DateFormat.yMMMMd('zh_CN'); String localized = localeFormat.format(now); // "2024年1月15日"

常用格式模板

// 日期部分 yyyy // 4位年份: 2024 yy // 2位年份: 24 MMMM // 完整月份: January MMM // 缩写月份: Jan MM // 2位月份: 01 M // 月份: 1 dd // 2位日期: 15 d // 日期: 15 // 时间部分 HH // 24小时制: 14 hh // 12小时制: 02 mm // 分钟: 30 ss // 秒: 45 a // AM/PM: AM // 星期 EEEE // 完整星期: Monday EEE // 缩写星期: Mon // 组合示例 DateFormat("yyyy年MM月dd日 EEEE"); // 2024年1月15日 星期一 DateFormat("MM/dd/yyyy hh:mm a"); // 01/15/2024 02:30 PM DateFormat("yyyy-MM-dd'T'HH:mm:ss");// 2024-01-15T14:30:45

预定于格式

// 日期格式 DateFormat.yMd(); // 2024/1/15 DateFormat.yMMMMd(); // January 15, 2024 DateFormat.yMMMMEEEEd(); // Monday, January 15, 2024 DateFormat.yMMMd(); // Jan 15, 2024 // 时间格式 DateFormat.Hm(); // 14:30 DateFormat.Hms(); // 14:30:45 DateFormat.jm(); // 2:30 PM DateFormat.jms(); // 2:30:45 PM // 本地化 DateFormat.yMMMMd('zh_CN'); // 2024年1月15日 DateFormat.yMMMMd('ja_JP'); // 2024年1月15日 DateFormat.yMMMMd('de_DE'); // 15. Januar 2024

DateTime运算

DateTime now = DateTime.now(); // 增加时间-add DateTime tomorrow = now.add(Duration(days: 1)); DateTime nextHour = now.add(Duration(hours: 1)); DateTime nextWeek = now.add(Duration(days: 7)); // 减少时间-subtract DateTime yesterday = now.subtract(Duration(days: 1)); DateTime lastHour = now.subtract(Duration(hours: 1)); // 计算差异-difference DateTime date1 = DateTime(2024, 1, 1); DateTime date2 = DateTime(2024, 1, 15); Duration difference = date2.difference(date1); print(difference.inDays); // 14天

时间比较

DateTime date1 = DateTime(2024, 1, 10); DateTime date2 = DateTime(2024, 1, 15); // 比较方法 print(date1.isBefore(date2)); // true print(date1.isAfter(date2)); // false print(date1.isAtSameMomentAs(date2)); // false // 检查两个 DateTime 是否表示同一时刻 print(date1.compareTo(date2)); // -1 (小于) //compareTo用于比较两个日期时间的先后顺序,返回一个整数表示比较结果,(正数或负数或0) // 排序-sort List<DateTime> dates = [date2, date1]; dates.sort(); // 自动按时间排序 // 判断是否在同一天 bool isSameDay(DateTime a, DateTime b) { return a.year == b.year && a.month == b.month && a.day == b.day; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/31 2:51:09

Buck电源仿真设计,基于MATLAB/Simulink建模仿真。 使用Control System

Buck电源仿真设计&#xff0c;基于MATLAB/Simulink建模仿真。 使用Control System Tool的sisotool模块&#xff0c;对Buck电路的控制环参数进行设计&#xff0c;可以一键生成传递函数&#xff0c;生成bode图。 可以进行PI参数整定。 仿真模型验证。 包含word文档对建模和校正过…

作者头像 李华
网站建设 2026/7/31 2:50:21

8款AI论文工具一站式操作指南:免费写开题报告超简单

你是不是正对着空白的文档发呆&#xff0c;不知如何下笔写开题报告&#xff1f;或者面对海量文献&#xff0c;感觉无从下手&#xff1f;别担心&#xff0c;随着AI技术的发展&#xff0c;现在有了一系列强大的工具&#xff0c;可以成为你学术道路上的“神助攻”。本文将为你带来…

作者头像 李华
网站建设 2026/7/31 6:20:46

基于MATLAB/Simulink的Statcom静止无功补偿器仿真探秘

Statcom&#xff1a;基于MATLAB/Simulink的静止无功补偿器仿真模型&#xff0c;负载端加入断路器模拟断路故障。 仿真条件&#xff1a;MATLAB/Simulink R2015b在电力系统的研究与优化中&#xff0c;静止无功补偿器&#xff08;Statcom&#xff09;起着举足轻重的作用。今天咱们…

作者头像 李华
网站建设 2026/7/28 4:12:39

Comsol无偏振转换吸收器多重干涉理论探索

Comsol无偏振转换吸收器多重干涉理论。 包含透反射计算&#xff0c;S参数特殊处理&#xff0c;Matlab脚本等。在研究Comsol无偏振转换吸收器时&#xff0c;多重干涉理论是其中的关键要点。多重干涉发生在吸收器的多层结构中&#xff0c;不同层之间的界面会导致光的多次反射和干…

作者头像 李华
网站建设 2026/7/26 14:04:59

MATLAB基于领航追随法的车辆编队控制,领航追随者与人工势场法的简单融合实现避障

MATLAB基于领航追随法的车辆编队控制&#xff0c;领航追随者与人工势场法的简单融合实现避障系统概述 本文介绍了一个基于领航追随法的多车辆编队控制系统&#xff0c;该系统实现了由一个领航车辆和两个跟随车辆组成的编队运动控制&#xff0c;并集成了人工势场法进行动态避障。…

作者头像 李华