從微信公衆平臺的消息接口指南中可以看出,每種類型的消息定義中,都包含有CreateTime參數,它表示消息的創建時間,如下圖所示:
上圖是消息接口指南中4.1-文本消息的定義。注意CreateTime的描述:消息創建時間(整型),重點在於這是一個整型的時間,而不是我們大家所熟悉的類似於"yyyy-MM-dd HH:mm:ss"的標準格式時間。本文主要想介紹的就是微信消息接口中定義的整型消息創建時間CreateTime的含義,以及如何將CreateTime轉換成我們所熟悉的時間格式。
整型CreateTime的含義
消息接口中定義的消息創建時間CreateTime,它表示1970年1月1日0時0分0秒至消息創建時所間隔的秒數,注意是間隔的秒數,不是毫秒數!
整型CreateTime的轉換
在Java中,我們也經常會通過下面兩種方式獲取long類型的時間,先上代碼:
/**
* 演示Java中常用的獲取long類型時間的兩種方式
*/
public static void main(String[] args) {
long longTime1 = System.currentTimeMillis();
// 1373206143378
System.out.println(longTime1);
long longTime2 = new java.util.Date().getTime();
// 1373206143381
System.out.println(longTime2);
}
上面兩種獲取long類型時間的方法是等價的,獲取到的結果表示當時時間距離1970年1月1日0時0分0秒0毫秒的毫秒數,注意這裏是毫秒數!那麼這裏獲取到的long類型的時間如何轉換成標準格式的時間呢?方法如下:
/**
* 演示Java中常用的獲取long類型時間的兩種方式
*/
public static void main(String[] args) {
// 當前時間(距離1970年1月1日0時0分0秒0毫秒的毫秒數)
long longTime = 1373206143378L;
String stdFormatTime = formatTime(longTime);
// 輸出:2013-07-07 22:09:03
System.out.println(stdFormatTime);
}
/**
* 將long類型的時間轉換成標準格式(yyyy-MM-dd HH:mm:ss)
*
* @param longTime
* @return
*/
public static String formatTime(long longTime) {
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return format.format(new Date(longTime));
}
上面演示了將一個long類型的時間轉換成標準格式的時間,只是簡單的運用了SimpleDateFormat類,比較好懂的。那麼再回到今天的主題上來,如何將CreateTime轉換成標準格式的時間。
微信消息接口中的CreateTime表示距離1970年的秒數,而System.currentTimeMillis()表示距離1970年的毫秒數,它們之間的換算就相當於:1秒=1000毫秒,即將CreateTime乘以1000,就變成了距離1970年的毫秒數了,就可以使用上面的formatTime()方法來處理了,是不是很簡單呢?
下面,我還是單另封裝一個方法,用於將微信消息中的整型的消息創建時間CreateTime轉換成標準格式的時間,如下:
/**
* 將微信消息中的CreateTime轉換成標準格式的時間(yyyy-MM-dd HH:mm:ss)
*
* @param createTime 消息創建時間
* @return
*/
public static String formatTime(String createTime) {
// 將微信傳入的CreateTime轉換成long類型,再乘以1000
long msgCreateTime = Long.parseLong(createTime) * 1000L;
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return format.format(new Date(msgCreateTime));
}
如果覺得文章對你有所幫助,請通過留言或關注微信公衆帳號xiaoqrobot來支持柳峯哦!