日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Unity中date相关问题

發布時間:2023/12/13 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity中date相关问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天遇到了從服務器獲取unix時間戳,將其轉換為時間并顯示的需求。Unity中可以使用C#中有關的date函數來處理這個問題。

首先UNIX時間戳的定義如下:

Unix時間戳(英文為Unix?epoch,?Unix?time,?POSIX?time?或?Unix?timestamp

是從197011日(UTC/GMT的午夜)開始所經過的秒數,不考慮閏秒。

UNIX時間戳的0按照ISO?8601規范為?:1970-01-01T00:00:00Z.

一個小時表示為UNIX時間戳格式為:3600秒;一天表示為UNIX時間戳為86400秒,閏秒不計算。

在大多數的UNIX系統中UNIX時間戳存儲為32位,這樣會引發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中運行結果如下:

值得注意的是Unity中似乎默認的都是12進制,而不是24小時的。策劃要求24小時進制顯示,因此最后我的UNIX時間戳轉換代碼如下:

/* 將UNIX時間戳轉換成系統時間 */ public static string getTime(string _time) { string timeStamp = _time; DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));//基準值 long lTime = long.Parse(timeStamp + "0000000"); //轉換到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進制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是用來表示一個時間段的實例,兩個時間的差可以構成一個TimeSpan實例

DateTime.Tick?:是一個計時周期,表示一百納秒,即一千萬分之一秒,那么?Ticks?在這里表示總共相差多少個時間周期,也就是說,TickTimeSpan的計時單位。

因此

在這里將時間戳轉換成了Tick計時單位。

下邊是將時間轉回unix時間戳

epoch?=?(DateTime.Now.ToUniversalTime().Ticks?-?621355968000000000)?/?10000000


下邊是日期格式的說明,大寫的HH完成了24小時進制的轉換


總結

以上是生活随笔為你收集整理的Unity中date相关问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。