当前位置: 首页 > news >正文

DateTime 时间处理

常用一、5 个最常用的操作// 1. 获取当前时间 DateTime now DateTime.Now; // 2026-05-21 14:30:00 DateTime today DateTime.Today; // 2026-05-21 00:00:00 // 2. 格式化输出 now.ToString(yyyy-MM-dd HH:mm:ss); // 2026-05-21 14:30:00 now.ToString(yyyy/MM/dd); // 2026/05/21 // 3. 字符串转日期 DateTime.Parse(2026-05-21); DateTime.Parse(2026/05/21 14:30); // 安全版推荐 if (DateTime.TryParse(2026-05-21, out DateTime dt)) { Console.WriteLine(dt); } // 4. 日期相减 TimeSpan TimeSpan ts date2 - date1; Console.WriteLine(ts.TotalDays); // 相差几天 Console.WriteLine(ts.TotalHours); // 相差几小时 // 5. 日期加减 DateTime d1 now.AddDays(7); // 7 天后 DateTime d2 now.AddMonths(-1); // 1 个月前 DateTime d3 now.AddHours(2); // 2 小时后 DateTime d4 now.Add(TimeSpan.FromMinutes(30)); // 通用 Add(TimeSpan)二、常用格式化格式结果yyyy-MM-dd2026-05-21yyyy/MM/dd2026/05/21HH:mm:ss14:30:00yyyy-MM-dd HH:mm:ss2026-05-21 14:30:00yyyyMMdd20260521MM-dd05-21三、TimeSpanTimeSpan ts date2 - date1; ts.Days; // 整天数 ts.Hours; // 小时数不含天 ts.Minutes; // 分钟数不含小时 ts.Milliseconds; // 毫秒数 ts.TotalDays; // 总天数带小数 ts.TotalHours; // 总小时数带小数四、常用静态字段DateTime.Now // 当前时刻 DateTime.Today // 今天 0 点 DateTime.UtcNow // UTC 时间与时区无关 DateTime.MinValue // 最小日期 0001-01-01 DateTime.MaxValue // 最大日期 9999-12-31五、实用场景// 1. 记录操作时间 student.CreateTime DateTime.Now; // 2. 今天出生的人 DateTime today DateTime.Today; var result GetStudents(s s.BirthDate today); // 3. 文件命名 string fileName ${DateTime.Now:yyyyMMdd_HHmmss}.log; // 输出20260521_143000.log // 4. 程序运行耗时 DateTime start DateTime.Now; // ... 执行代码 ... TimeSpan elapsed DateTime.Now - start; Console.WriteLine($耗时{elapsed.TotalMilliseconds}ms);六、Unix 时间戳 ↔ DateTime设备传过来的时间经常是一个长整数秒数用DateTimeOffset转换。时间戳 → DateTimelong s 111111111; // 设备传来的秒数 DateTime tt DateTimeOffset.FromUnixTimeSeconds(s) // 转 UTC .LocalDateTime; // 转本地时区 Console.WriteLine(tt); // 1973/7/4 14:51:51北京时间毫秒级时间戳用FromUnixTimeMilliseconds。DateTime → 时间戳long s DateTimeOffset.Now.ToUnixTimeSeconds(); // 当前时间 → 秒数 long ms DateTimeOffset.Now.ToUnixTimeMilliseconds(); // 毫秒数为什么用 DateTimeOffset 而不是 DateTimeDateTime不知道自己是哪个时区DateTimeOffset带时区偏移转本地时间不会出错。Console.WriteLine(DateTimeOffset.Now); // 2026-05-21 14:30:00 08:00 Console.WriteLine(DateTime.Now); // 2026-05-21 14:30:00上位机接设备时用DateTimeOffset更安全避免时区搞错。七、提取日期各部分DateTime now DateTime.Now; int year now.Year; // 2026 int month now.Month; // 5 int day now.Day; // 21 int hour now.Hour; // 14 int min now.Minute; // 30 int sec now.Second; // 0 int week (int)now.DayOfWeek; // 40周日八、手动创建 TimeSpanTimeSpan ts1 TimeSpan.FromSeconds(30); // 30秒 TimeSpan ts2 TimeSpan.FromMinutes(5); // 5分钟 TimeSpan ts3 TimeSpan.FromHours(1.5); // 1.5小时 TimeSpan ts4 TimeSpan.FromMilliseconds(500); // 500毫秒 TimeSpan ts5 new TimeSpan(1, 30, 0); // 1小时30分九、测耗时用 Stopwatch不要用 DateTime.Now// ❌ DateTime.Now 精度约 15ms短操作测不准 DateTime start DateTime.Now; DoSomething(); TimeSpan elapsed DateTime.Now - start; // ✅ Stopwatch 精度微秒级 Stopwatch sw Stopwatch.StartNew(); DoSomething(); sw.Stop(); Console.WriteLine(${sw.ElapsedMilliseconds}ms); // 毫秒 Console.WriteLine(${sw.Elapsed.TotalSeconds}s); // 秒上位机测相机采图耗时、算法处理耗时都用Stopwatch。十、比较日期// 直接比较比较到刻度包含时间 if (dt1 dt2) { } if (dt1 dt2) { } int result dt1.CompareTo(dt2); // -1小于 0等于 1大于 // 只比较年月日忽略时间 if (dt1.Date dt2.Date) { } if (dt1.Date dt2.Date) { }十一、常见坑坑 1DateTime.Now 每次调用值不同// ❌ 多次调用 Now可能得到不同值 if (dt DateTime.Now dt DateTime.Now.AddMinutes(5)) // 中间 NOW 可能变了 // ✅ 存一次变量复用 DateTime now DateTime.Now; if (dt now dt now.AddMinutes(5))坑 2格式化大小写yyyy → 年份小写 MM → 月份大写 mm → 分钟小写 HH → 24小时制大写 hh → 12小时制小写 ss → 秒小写坑 3没收到数据时 DateTime.MinValueDateTime lastTime DateTime.MinValue; // 0001-01-01 // 判断是否从未更新过 if (lastTime DateTime.MinValue) { }坑 4数据库存时间用 UTC上位机项目一般不用注意多个设备跨时区才需要考虑。十二、其他实用方法// 某个月有多少天 int days DateTime.DaysInMonth(2026, 5); // 31 // 指定格式解析比 TryParse 更严格 if (DateTime.TryParseExact(2026-05-21, yyyy-MM-dd, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime dt)) { } // 可空日期 DateTime? birthday null; if (birthday.HasValue) { }十三、不用背的部分遇到再查IsDaylightSavingTime → 是否夏令时 FromFileTime → NTFS 文件时间转 DateTime ToLocalTime → UTC → 本地 ToUniversalTime → 本地 → UTC DateTimeStyles → 解析时的选项如忽略时区总结获取当前时间 → DateTime.Now注意存变量复用 格式化 → .ToString(yyyy-MM-dd HH:mm:ss) 字符串解析 → DateTime.TryParse() / TryParseExact() 提取各部分 → .Year .Month .Day .Hour .Minute .Second Unix秒数→时间 → DateTimeOffset.FromUnixTimeSeconds(n).LocalDateTime 时间→Unix秒数 → DateTimeOffset.Now.ToUnixTimeSeconds() 时间差 → TimeSpan ts t2 - t1 手动创建间隔 → TimeSpan.FromSeconds() / FromMinutes() 日期加减 → now.AddDays(7) / Add(TimeSpan) 比较日期 → 或 .Date 忽略时间比较 测耗时 → Stopwatch.StartNew() 不要用 DateTime.Now
http://www.rkmt.cn/news/1398180.html

相关文章:

  • 从TVS到肖特基:一张图看懂8种二极管的选型指南与典型电路
  • SpringBoot实战:三种主流CORS跨域配置方案详解与选型
  • 从编译错误到成功导入:手把手教你为MinkowskiEngine 0.5.4在Ubuntu22.04上搭建Python 3.8虚拟环境
  • 2026乐山临江鳝丝TOP5门店排行:乐山跷脚牛肉店有哪些、乐山跷脚牛肉排行前三、乐山跷脚牛肉更正宗、乐山跷脚牛肉哪家好选择指南 - 优质品牌商家
  • 手把手教你用立创GD32E230开发板实现按键控制LED(GPIO输入输出实战)
  • SkiaSharp实战:5分钟为你的C# WinForm应用添加一个“可移动的小球”
  • 27考研311教育学历年真题PDF
  • 臺灣大學校總區無車化執行方案與推動時程整體規劃案(繁) 2025
  • 如何解决网页保存的三大痛点?SingleFile工具让完整网页归档变得如此简单
  • 动态目标跨镜无缝接力追踪技术——科技园区科研区域安防场景中的空间智能应用白皮书
  • ChatGPT学生免费账号还能用多久?内部信源透露:2024Q3起将分批关闭未续验账户
  • 别再死记硬背了!用这个C语言预测分析法程序帮你搞定《编译原理》实验
  • 【C++】从sleep()到clock():精准控制程序时序的实战指南
  • Mac上折腾John the Ripper破解加密压缩包:从安装到放弃的14小时实录
  • 2026年4月成都火锅品牌口碑推荐,烧菜火锅/特色美食/美食/社区火锅/火锅,成都火锅品牌找哪家 - 品牌推荐师
  • ubuntu下stlink(v1/v2/v3)实现GD32下载程序
  • 碳硅共生,智联金砖|玄同科技邀您共赴 5・28 厦门 OPC 生态盛会!
  • 2026年5月深圳金蝶云星空与店小秘接口对接:必须掌握的30+种数据保存类型清单
  • Cursor 智能编程助手实战应用指南
  • 2026靠谱爱普生UV打印机品牌推荐:图文数码打印机、小批量包装打印机、烫金增效打印机、礼盒数码打样机、逆向UV数码打印机选择指南 - 优质品牌商家
  • SHINE:基于内存解耦架构的分布式HNSW索引设计与优化
  • 2026绵阳沟通障碍康复机构优质推荐榜:绵阳语言障碍/绵阳刻板行为康复/绵阳发育迟缓/绵阳多动症/绵阳孤独症/绵阳感统训练/选择指南 - 优质品牌商家
  • 别再像我一样踩坑!用PSIM和Multisim手把手教你推导Buck电路的正确传递函数
  • IMXRT开发板SWO跟踪配置与调试指南
  • LM741反相放大器设计避坑指南:电源、电阻选型与失真问题全解析
  • 实战派指南:用Python的sklearn库,5分钟搞定PCA、LDA和t-SNE可视化
  • 2026中式瓦厂家权威名录:四川青瓦厂家、小青瓦厂家、仿古建筑砖瓦厂家、仿古建筑青瓦厂家、仿古琉璃瓦厂家、仿古瓦厂家选择指南 - 优质品牌商家
  • 2026年5月新疆凉亭直销厂家推荐电话:聚焦本土制造与定制化服务能力 - 2026年企业资讯
  • Docker安装常见数据库命令汇总(2026)
  • 从信息论到代码:深入浅出解读Kozachenko-Leonenko熵估计公式及其Python实现