Java~時間戳小知識
阿新 • • 發佈:2018-12-30
大叔對java時間戳使用的總結
- Java裡的Date物件有方法setTime,主要是將一個時間戳轉成一個日期物件,而這個時間戳的標準是unix標準,即當前時間與1970/1/1相差的毫秒數,記得是毫秒!
- .net裡的時間戳與java不同,所有需要特殊處理一個它的其實時間,而且.net裡時間戳為double,如何要給java傳輸,需要轉為long!
- java與.net時間在進行傳輸時,不建議直接使用時間字串,因為會有相容問題,還是建議使用時間戳為標準.
- 開一個.net裡的一個擴充套件方法,主要用來生成java的long型別及起始時間的時間戳
- 注意java裡的setTime,使用的時間戳引數為UTC時間戳
C#裡相關時間戳的擴充套件方法
/// <summary> /// 時間幫助類 /// </summary> public class TimeHelper { /// <summary> /// 日期轉換成unix時間戳 /// </summary> /// <param name="dateTime"></param> /// <returns></returns> public staticlong 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);
感謝各位的閱讀!
知識在於積累!