1. 程式人生 > >C# 與Java 時間互相轉換

C# 與Java 時間互相轉換

C# 時間轉 Java時間

/// <summary>
        /// 日期轉換
        /// </summary>
        /// <param name="date"></param>
        /// <returns></returns>
        public java.util.Date DateConvert(DateTime date)
        {
            DateTime nTime = date.AddHours(-8);
            long ctime = nTime.Ticks;
            long c1970 = new DateTime(1970,1,1).Ticks;
            long java_ticks = (ctime - c1970)/10000;
            java.util.Date jDate = new java.util.Date(java_ticks);
            return jDate;
        }

Java 時間轉C#時間

 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年的時間,這適合大多數人的時間要求。

        C# 日期型資料的長整型值是自 0001 年 1 月 1 日午夜 12:00,以來所經過時間以100 毫微秒為間隔表示時的數字。這個數在 C# 的 DateTime 中被稱為Ticks(刻度)。DateTime 型別有一個名為 Ticks 的長整型只讀屬性,就儲存著這個值。

        將Java的長整型時間轉化為C#時間:

        long time_JAVA_Long = 1207969641193;//java長整型日期,毫秒為單位
        DateTime dt_1970 = new DateTime(1970,1,1);
        long tricks_1970 = dt_1970.Ticks;//1970年1月1日刻度
        long time_tricks = tricks_1970 + time_Long*10000;//日誌日期刻度
        DateTime dt = new DateTime(time_tricks);//轉化為DateTime