C#實(shí)現(xiàn)時(shí)間戳的簡(jiǎn)單方法
Introduction:
在項(xiàng)目開發(fā)中,我們都經(jīng)常會(huì)用到時(shí)間戳來進(jìn)行時(shí)間的存儲(chǔ)和傳遞,最常用的Unix時(shí)間戳(TimeStamp)是指格林尼治時(shí)間1970年1月1日0時(shí)(北京時(shí)間1970年1月1日8時(shí))起至現(xiàn)在的總秒數(shù)(10位)或總毫秒數(shù)(13位);
Body:
而在C#中.Net框架沒有提供現(xiàn)成的獲取時(shí)間戳的方式,這里分享一個(gè)自己實(shí)現(xiàn)的時(shí)間戳轉(zhuǎn)換工具:
/// <summary>
/// 時(shí)間工具類
/// </summary>
public static class DateTimeUtil
{
/// <summary>
/// 時(shí)間戳計(jì)時(shí)開始時(shí)間
/// </summary>
private static DateTime timeStampStartTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
/// <summary>
/// DateTime轉(zhuǎn)換為10位時(shí)間戳(單位:秒)
/// </summary>
/// <param name="dateTime"> DateTime</param>
/// <returns>10位時(shí)間戳(單位:秒)</returns>
public static long DateTimeToTimeStamp(DateTime dateTime)
{
return (long)(dateTime.ToUniversalTime() - timeStampStartTime).TotalSeconds;
}
/// <summary>
/// DateTime轉(zhuǎn)換為13位時(shí)間戳(單位:毫秒)
/// </summary>
/// <param name="dateTime"> DateTime</param>
/// <returns>13位時(shí)間戳(單位:毫秒)</returns>
public static long DateTimeToLongTimeStamp(DateTime dateTime)
{
return (long)(dateTime.ToUniversalTime() - timeStampStartTime).TotalMilliseconds;
}
/// <summary>
/// 10位時(shí)間戳(單位:秒)轉(zhuǎn)換為DateTime
/// </summary>
/// <param name="timeStamp">10位時(shí)間戳(單位:秒)</param>
/// <returns>DateTime</returns>
public static DateTime TimeStampToDateTime(long timeStamp)
{
return timeStampStartTime.AddSeconds(timeStamp).ToLocalTime();
}
/// <summary>
/// 13位時(shí)間戳(單位:毫秒)轉(zhuǎn)換為DateTime
/// </summary>
/// <param name="longTimeStamp">13位時(shí)間戳(單位:毫秒)</param>
/// <returns>DateTime</returns>
public static DateTime LongTimeStampToDateTime(long longTimeStamp)
{
return timeStampStartTime.AddMilliseconds(longTimeStamp).ToLocalTime();
}
}
One more thing:
在C#中,DateTime和字符串類型類似,都是一個(gè)設(shè)計(jì)良好的不可變類型,但與字符串類型不同的是,DateTime是值類型,不會(huì)造成單獨(dú)的堆內(nèi)存消耗和垃圾回收開銷,因此大大部分情況下都可以放心使用;
Conclusion:
DateTime在使用時(shí)還有很多小技巧,博主后面會(huì)在新博文中分享出來和大家一起探討。有關(guān)閏秒的話題可以自行Search,這里不做討論。
總結(jié)
以上所述是小編給大家介紹的C#實(shí)現(xiàn)時(shí)間戳的簡(jiǎn)單方法,希望對(duì)大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
相關(guān)文章
C#創(chuàng)建Windows服務(wù)的圖文教程
本文主要介紹了C#創(chuàng)建Windows服務(wù)的圖文教程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
C#使用WebClient實(shí)現(xiàn)上傳下載
這篇文章介紹了C#使用WebClient實(shí)現(xiàn)上傳下載的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05
WPF使用Accord實(shí)現(xiàn)屏幕錄制功能
這篇文章主要為大家詳細(xì)介紹了WPF如何使用Accord實(shí)現(xiàn)屏幕錄制,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定幫助,感興趣的小伙伴可以了解一下2024-03-03

