C#时间戳的简单实现
程序员文章站
2022-07-11 10:33:03
Introduction: 在项目开发中,我们都经常会用到时间戳来进行时间的存储和传递,最常用的Unix时间戳(TimeStamp)是指格林尼治时间1970年1月1日0时(北京时间1970年1月1日8时)起至现在的总秒数(10位)或总毫秒数(13位); Body: 而在C#中.Net框架没有提供现成 ......
introduction:
在项目开发中,我们都经常会用到时间戳来进行时间的存储和传递,最常用的unix时间戳(timestamp)是指格林尼治时间1970年1月1日0时(北京时间1970年1月1日8时)起至现在的总秒数(10位)或总毫秒数(13位);
body:
而在c#中.net框架没有提供现成的获取时间戳的方式,这里分享一个自己实现的时间戳转换工具:
/// <summary> /// 时间工具类 /// </summary> public static class datetimeutil { /// <summary> /// 时间戳计时开始时间 /// </summary> private static datetime timestampstarttime = new datetime(1970, 1, 1, 0, 0, 0, datetimekind.utc); /// <summary> /// datetime转换为10位时间戳(单位:秒) /// </summary> /// <param name="datetime"> datetime</param> /// <returns>10位时间戳(单位:秒)</returns> public static long datetimetotimestamp(datetime datetime) { return (long)(datetime.touniversaltime() - timestampstarttime).totalseconds; } /// <summary> /// datetime转换为13位时间戳(单位:毫秒) /// </summary> /// <param name="datetime"> datetime</param> /// <returns>13位时间戳(单位:毫秒)</returns> public static long datetimetolongtimestamp(datetime datetime) { return (long)(datetime.touniversaltime() - timestampstarttime).totalmilliseconds; } /// <summary> /// 10位时间戳(单位:秒)转换为datetime /// </summary> /// <param name="timestamp">10位时间戳(单位:秒)</param> /// <returns>datetime</returns> public static datetime timestamptodatetime(long timestamp) { return timestampstarttime.addseconds(timestamp).tolocaltime(); } /// <summary> /// 13位时间戳(单位:毫秒)转换为datetime /// </summary> /// <param name="longtimestamp">13位时间戳(单位:毫秒)</param> /// <returns>datetime</returns> public static datetime longtimestamptodatetime(long longtimestamp) { return timestampstarttime.addmilliseconds(longtimestamp).tolocaltime(); } }
one more thing:
在c#中,datetime和字符串类型类似,都是一个设计良好的不可变类型,但与字符串类型不同的是,datetime是值类型,不会造成单独的堆内存消耗和垃圾回收开销,因此大大部分情况下都可以放心使用;
conclusion:
datetime在使用时还有很多小技巧,博主后面会在新博文中分享出来和大家一起探讨。有关闰秒的话题可以自行search,这里不做讨论。
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的认可是我写作的最大动力!
作者:minotauros
出处:
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。