[工具類]將時間轉換為unix時間戳格式


寫在前面

由於在數據庫中存的時間有時間戳格式的數據,在解析以及保存的時候,就需要考慮到數據格式的兼容性問題。看到數據庫中的時間字段基本上都是以時間戳格式存儲的,沒辦法,只能將時間進行轉換了,考慮到其他系統可能要對時間字段進行操作,就不得不考慮時間的兼容性了。

時間戳輔助類

什么是時間戳?

Unix時間戳(Unix timestamp),或稱Unix時間(Unix time)、POSIX時間(POSIX time),是一種時間表示方式,定義為從格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數。Unix時間戳不僅被使用在Unix系統、類Unix系統中(比如Linux系統),也在許多其他操作系統中被廣泛采用。
php中獲取時間戳的方法是:time();Date();
Linux中獲取時間戳的方法是:date +%s
Linux中將時間戳轉換為日期: date -d "@<timestamp>"

既然知道了基准時間為1970年01月01日00時00分00秒,那么轉換為時間戳就很容易了。

 1     /// <summary>
 2     ///日期轉換輔助類
 3     /// </summary>
 4     public static class DateHelper
 5     {
 6 
 7         public static DateTime ConvertTime(string datatime)
 8         {
 9             Int64 timeStamp = Convert.ToInt64(datatime);
10             DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
11             TimeSpan toNow = new TimeSpan(timeStamp * 10000);
12             return dtStart.Add(toNow);
13         }
14 
15         /// <summary>
16         /// 將c# DateTime時間格式轉換為Unix時間戳格式
17         /// </summary>
18         /// <param name="time">時間</param>
19         /// <returns>long</returns>
20         public static long ConvertTime2Long(System.DateTime time)
21         {
22             System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0));
23             long t = (time.Ticks - startTime.Ticks) / 10000;            //除10000調整為13位
24             return t;
25         }
26 
27     }

簡單測試

 1     class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             long result = DateHelper.ConvertTime2Long(DateTime.Now);
 6             Console.WriteLine("時間戳:" + result);
 7             DateTime dt = DateHelper.ConvertTime(result.ToString());
 8             Console.WriteLine("時間:"+dt.ToString());
 9             Console.Read();
10         }
11     }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM