Unity中date相关问题
今天遇到了從服務(wù)器獲取unix時間戳,將其轉(zhuǎn)換為時間并顯示的需求。Unity中可以使用C#中有關(guān)的date函數(shù)來處理這個問題。
首先UNIX時間戳的定義如下:
Unix時間戳(英文為Unix?epoch,?Unix?time,?POSIX?time?或?Unix?timestamp)
是從1970年1月1日(UTC/GMT的午夜)開始所經(jīng)過的秒數(shù),不考慮閏秒。
UNIX時間戳的0按照ISO?8601規(guī)范為?:1970-01-01T00:00:00Z.
一個小時表示為UNIX時間戳格式為:3600秒;一天表示為UNIX時間戳為86400秒,閏秒不計算。
在大多數(shù)的UNIX系統(tǒng)中UNIX時間戳存儲為32位,這樣會引發(fā)2038年問題或Y2038。
DateTime?dt?=?DateTime.Now;?
dt.ToString();
dt.ToFileTime().ToString();
dt.ToFileTimeUtc().ToString();
dt.ToLocalTime().ToString();
dt.ToLongDateString().ToString();
dt.ToLongTimeString().ToString();
dt.ToOADate().ToString();
dt.ToShortDateString().ToString();
dt.ToShortTimeString().ToString();
dt.ToUniversalTime().ToString();
dt.Year.ToString();
dt.Date.ToString();
dt.DayOfWeek.ToString();
dt.DayOfYear.ToString();
dt.Hour.ToString();
dt.Millisecond.ToString();
dt.Minute.ToString();
dt.Month.ToString();
dt.Second.ToString();
dt.Ticks.ToString();
dt.TimeOfDay.ToString();
Unity中運(yùn)行結(jié)果如下:
值得注意的是Unity中似乎默認(rèn)的都是12進(jìn)制,而不是24小時的。策劃要求24小時進(jìn)制顯示,因此最后我的UNIX時間戳轉(zhuǎn)換代碼如下:
/* 將UNIX時間戳轉(zhuǎn)換成系統(tǒng)時間 */ public static string getTime(string _time) { string timeStamp = _time; DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));//基準(zhǔn)值 long lTime = long.Parse(timeStamp + "0000000"); //轉(zhuǎn)換到Tick計時單位 TimeSpan toNow = new TimeSpan(lTime); DateTime dtResult = dtStart.Add(toNow); string date = dtResult.ToShortDateString().ToString(); string time = dtResult.ToString("HH:mm:ss").ToString(); //24進(jìn)制string[] date_arr = date.Split('/'); string[] time_arr = time.Split(':'); string result = date_arr[0]+"月"+date_arr[1]+"日"+" "+time_arr[0]+":"+time_arr[1]; return result; }
這里再說下TimeSpan
TimeSpan是用來表示一個時間段的實(shí)例,兩個時間的差可以構(gòu)成一個TimeSpan實(shí)例
DateTime.Tick?:是一個計時周期,表示一百納秒,即一千萬分之一秒,那么?Ticks?在這里表示總共相差多少個時間周期,也就是說,Tick是TimeSpan的計時單位。
因此
在這里將時間戳轉(zhuǎn)換成了Tick計時單位。
下邊是將時間轉(zhuǎn)回unix時間戳
epoch?=?(DateTime.Now.ToUniversalTime().Ticks?-?621355968000000000)?/?10000000
下邊是日期格式的說明,大寫的HH完成了24小時進(jìn)制的轉(zhuǎn)換
總結(jié)
以上是生活随笔為你收集整理的Unity中date相关问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unity3D研究院之获取摄像机的视口区
- 下一篇: 查找unity工程代码中中文字符