文章出處

大叔對java時間戳使用的總結

  1. Java里的Date對象有方法setTime,主要是將一個時間戳轉成一個日期對象,而這個時間戳的標準是unix標準,即當前時間與1970/1/1相差的毫秒數,記得是毫秒!
  2. .net里的時間戳與java不同,所有需要特殊處理一個它的其實時間,而且.net里時間戳為double,如何要給java傳輸,需要轉為long!
  3. java與.net時間在進行傳輸時,不建議直接使用時間字符串,因為會有兼容問題,還是建議使用時間戳為標準.
  4. 開一個.net里的一個擴展方法,主要用來生成java的long類型及起始時間的時間戳
  5. 注意java里的setTime,使用的時間戳參數為UTC時間戳

C#里相關時間戳的擴展方法

    /// <summary>
    /// 時間幫助類
    /// </summary>
    public class TimeHelper
    {
        /// <summary>
        /// 日期轉換成unix時間戳
        /// </summary>
        /// <param name="dateTime"></param>
        /// <returns></returns>
        public static long DateTimeToUnixTimestamp(DateTime dateTime)
        {
            var start = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Local);
            return Convert.ToInt64((dateTime - start).TotalMilliseconds);
        }

        /// <summary>
        /// unix時間戳轉換成日期
        /// </summary>
        /// <param name="unixTimeStamp">時間戳(秒)</param>
        /// <returns></returns>
        public static DateTime UnixTimestampToDateTime(DateTime target, long timestamp)
        {
            var start = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Local);
            return start.AddSeconds(timestamp);
        }

    }

在C#里為java傳輸時,需要把本地時間轉為UTC時間

TimeHelper.DateTimeToUnixTimestamp(DateTime.Now.ToUniversalTime());

這樣在java時,直接setTime后,就是本地時間了

    Date d1 = new Date();
    d1.setTime(1490232651510L);
    System.err.println(d1);

感謝各位的閱讀!

知識在于積累!

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()