C#实现时间戳的简单方法
程序员文章站
2022-06-09 13:39:24
introduction:
在项目开发中,我们都经常会用到时间戳来进行时间的存储和传递,最常用的unix时间戳(timestamp)是指格林尼治时间1970年1月1日...
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,这里不做讨论。
总结
以上所述是小编给大家介绍的c#实现时间戳的简单方法,希望对大家有所帮助