1. 程式人生 > 實用技巧 >c# DateTime時間格式和JAVA時間戳格式相互轉換

c# DateTime時間格式和JAVA時間戳格式相互轉換

https://www.cnblogs.com/ZCoding/p/4192067.html

/// java時間戳格式時間戳轉為C#格式時間  
public static DateTime GetTime(long timeStamp)
{
    DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
    long lTime = timeStamp * 10000;
    TimeSpan toNow = new TimeSpan(lTime);
    return dtStart.Add(toNow);
}

/// C# DateTime時間格式轉換為Java時間戳格式 public static long ConvertDateTime(System.DateTime time) { System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); return (long)(time - startTime).TotalMilliseconds; }

https://www.cnblogs.com/Donnnnnn/p/6088217.html

封裝一下,可直接用。

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