C# / Unity關(guān)于 世界時(shí)間、本地時(shí)間、UNIX Timestamps,以及相互轉(zhuǎn)化的記錄
世界時(shí)間(UtcTime ):DateTime.UtcNow 獲取的是世界時(shí)間,如果開發(fā)一些全球國際性質(zhì)的產(chǎn)品,可以用這個(gè)時(shí)間來進(jìn)行。
本地時(shí)間(LocalTime): DateTime.Now 獲取的是當(dāng)前用戶所在時(shí)區(qū)的時(shí)間,也就是本地時(shí)間。
時(shí)間戳(Unix Timestamps): 把DateTime 轉(zhuǎn)化為Long方便用于數(shù)據(jù)傳輸?shù)鹊取?/p>
其中UtcTime和LocalTime相差是整整2個(gè)小時(shí)(DateTime.UtcNow輸出的是0時(shí)區(qū)的事件(通俗點(diǎn)就是格林威治時(shí)間的當(dāng)前時(shí)間),DateTime.Now輸出的是當(dāng)前時(shí)區(qū)的時(shí)間,我們中國使用的是東八區(qū)的時(shí)間,所以會相差8個(gè)小時(shí)。(當(dāng)然如果你不在國內(nèi),又會不同))文章來源:http://www.zghlxwxcb.cn/news/detail-651044.html
相關(guān)時(shí)區(qū)更好的資料:什么是市區(qū)
可以使用microsoft自己的在線編程工具測試文章來源地址http://www.zghlxwxcb.cn/news/detail-651044.html
然后其中相互轉(zhuǎn)化的代碼如下
#region Time tools
/// <summary>
/// 獲取世界時(shí)間
/// </summary>
public static DateTime NowUtcTime => DateTime.UtcNow;
/// <summary>
/// 獲取本地時(shí)間
/// </summary>
public static DateTime NowLocalTime => DateTime.Now;
/// <summary>
/// 把本地時(shí)間轉(zhuǎn)化為世界時(shí)間
/// </summary>
public static DateTime NowUtcTimeByLocal => TimeZoneInfo.ConvertTimeToUtc(NowLocalTime);
/// <summary>
/// 把Utc世界時(shí)間轉(zhuǎn)化為本地時(shí)間
/// </summary>
public static DateTime NowLocalTimeByUtc => NowUtcTime.ToLocalTime();
/// <summary>
/// 把DateTime 轉(zhuǎn)化為字符串
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static string DateTimeToString(DateTime dateTime) { return string.Format("{0:MM/dd/yyy HH:mm:ss.fff}", dateTime); }
/// <summary>
/// 把DateTime 轉(zhuǎn)化為 long類型的UNIX Timestamps
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static long ToUnixTimeByDateTime(DateTime dateTime) { return ((DateTimeOffset)dateTime).ToUnixTimeSeconds(); }
/// <summary>
/// UNIX Timestamps 轉(zhuǎn)化為 DateTime
/// </summary>
/// <param name="unixTime">UNIX Timestamps</param>
/// <param name="isToLocal">轉(zhuǎn)為為本地時(shí)間還是時(shí)間時(shí)間(相差8小時(shí))</param>
/// <returns></returns>
public static DateTime ToDateTimeByUnix(long unixTime, bool isToLocal = false)
{
DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
dtDateTime = dtDateTime.AddSeconds(unixTime);
if (isToLocal) dtDateTime = dtDateTime.ToLocalTime();
return dtDateTime;
}
#endregion
到了這里,關(guān)于C# / Unity關(guān)于 世界時(shí)間、本地時(shí)間、UNIX Timestamps,以及相互轉(zhuǎn)化的記錄的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!