封裝一下,可直接用。
以后碰到java的long time,直接使用DateTime dt=ConvertJavaDateTimeToNetTime(1207969641193);這樣使用即可。
這串日期數字:java長整型日期,毫秒為單位
public static DateTime convertJavaLongtimeToDatetime(long time_JAVA_Long) { DateTime dt_1970 = new DateTime(1970, 1, 1, 0, 0, 0); //年月日時分秒 long tricks_1970 = dt_1970.Ticks; //1970年1月1日刻度 long time_tricks = tricks_1970 + time_JAVA_Long * 10000; //日志日期刻度 DateTime dt = new DateTime(time_tricks).AddHours(8); //+8小時,轉化為DateTime return dt; }
在計算機中,時間實際上是用數字表示的。我們把1970年1月1日 00:00:00 UTC+00:00時區的時刻稱為epoch time,記為0(1970年以前的時間timestamp為負數),當前時間就是相對於epoch time的秒數,稱為timestamp。
Java統計從1970年1月1日起的毫秒的數量表示日期。也就是說,例如,1970年1月2日,是在1月1日后的86,400,000毫秒。同樣的,1969年12月31日是在1970年1月1日前86,400,000毫秒。Java的Date類使用long類型紀錄這些毫秒值.因為long是有符號整數,所以日期可以在1970年1月1日之前,也可以在這之后。Long類型表示的最大正值和最大負值可以輕松的表示290,000,000年的時間,這適合大多數人的時間要求。
Java中可以用System.currentTimeMillis() 獲取當前時間的long形式,它的標示形式是從1970年1月1日起的到當前的毫秒的數。
C# 日期型數據的長整型值是自 0001 年 1 月 1 日午夜 12:00,以來所經過時間以100 毫微秒為間隔表示時的數字。這個數在 C# 的 DateTime 中被稱為Ticks(刻度)。DateTime 類型有一個名為 Ticks 的長整型只讀屬性,就保存着這個值。
.NET下計算時間的方式不太一樣,它是計算單位是Ticks,這里就需要做一個C#時間轉換。關於Ticks,msdn上是這樣說的:
A single tick represents one hundred nanoseconds or one ten-millionth of a second. The value of this property represents the number of 100-nanosecond intervals that have elapsed since 12:00:00 midnight, January 1, 0001.
就是從公元元年元月1日午夜到指定時間的千萬分之一秒了,為了和Java比較,說成萬分之一毫秒。
需要注意的是,因為我們在東八區,所以要加8個小時。
參考:
http://blog.csdn.net/dragonpeng2008/article/details/8681435