一个人在家做网站建设,哪个是网站建设里面的,程序员的就业前景,医联体网站建设今天遇到了从服务器获取unix时间戳#xff0c;将其转换为时间并显示的需求。Unity中可以使用C#中有关的date函数来处理这个问题。
首先UNIX时间戳的定义如下#xff1a;
Unix时间戳#xff08;英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp#xff09;
是…
今天遇到了从服务器获取unix时间戳将其转换为时间并显示的需求。Unity中可以使用C#中有关的date函数来处理这个问题。
首先UNIX时间戳的定义如下
Unix时间戳英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp
是从1970年1月1日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 在这里表示总共相差多少个时间周期也就是说Tick是TimeSpan的计时单位。
因此 在这里将时间戳转换成了Tick计时单位。
下边是将时间转回unix时间戳
epoch (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000 下边是日期格式的说明大写的HH完成了24小时进制的转换