C#時間格式轉換爲時間戳(互轉)
時間戳定義爲從格林威治時間 1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數。
using UnityEngine;
using System.Collections;
using System;
public class DateTime_TimeStamp : MonoBehaviour
{
protected int m_timestamp;
private int GetTimeStamp(DateTime dt)// 獲取時間戳Timestamp
{
DateTime dateStart = new DateTime(1970, 1, 1, 8, 0, 0);
int timeStamp = Convert.ToInt32((dt - dateStart).TotalSeconds);
return timeStamp;
}
private DateTime GetDateTime(int timeStamp)//時間戳Timestamp轉換成日期
{
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
long lTime = ((long)timeStamp * 10000000);
TimeSpan toNow = new TimeSpan(lTime);
DateTime targetDt = dtStart.Add(toNow);
return targetDt;
}
private DateTime GetDateTime(string timeStamp)// 時間戳Timestamp轉換成日期
{
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
long lTime = long.Parse(timeStamp + "0000000");
TimeSpan toNow = new TimeSpan(lTime);
DateTime targetDt = dtStart.Add(toNow);
return dtStart.Add(toNow);
}
void OnGUI()
{
if (GUILayout.Button("獲取當前時間的時間戳"))
{
DateTime dtNow = DateTime.Now;
m_timestamp = GetTimeStamp(dtNow);
Debug.Log(string.Format("獲取當前時間的時間戳 = {0} -> {1}", dtNow.ToString("yyyy-MM-dd hh:mm:ss"), m_timestamp));
}
if (GUILayout.Button("將時間戳轉換成日期_1"))
{
DateTime dt = GetDateTime(m_timestamp);
Debug.Log(string.Format("將時間戳轉換成日期_1 = {0} -> {1}", m_timestamp, dt.ToString("yyyy-MM-dd hh:mm:ss")));
}
if (GUILayout.Button("將時間戳轉換成日期_2"))
{
DateTime dt = GetDateTime(m_timestamp.ToString());
Debug.Log(string.Format("將時間戳轉換成日期_2 = {0} -> {1}", m_timestamp, dt.ToString("yyyy-MM-dd hh:mm:ss")));
}
}