1. 程式人生 > >Java~時間戳小知識

Java~時間戳小知識

大叔對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);

感謝各位的閱讀!

知識在於積累!