C#時間與時間戳格式互相轉化

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")));
        }
    }

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章