Java longTime 和C#日期轉換


封裝一下,可直接用。

以后碰到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

 


免責聲明!

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



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