zoukankan      html  css  js  c++  java
  • [034] 微信公众帐号开发教程第10篇-解析接口中的消息创建时间CreateTime(转)

    从微信公众平台的消息接口指南中能够看出,每种类型的消息定义中,都包括有CreateTime參数,它表示消息的创建时间,例如以下图所看到的:

    上图是消息接口指南中4.1-文本消息的定义。注意CreateTime的描写叙述:消息创建时间(整型),重点在于这是一个整型的时间,而不是我们大家所熟悉的相似于"yyyy-MM-dd HH:mm:ss"的标准格式时间。本文主要想介绍的就是微信消息接口中定义的整型消息创建时间CreateTime的含义,以及怎样将CreateTime转换成我们所熟悉的时间格式。

    整型CreateTime的含义

    消息接口中定义的消息创建时间CreateTime,它表示1970年1月1日0时0分0秒至消息创建时所间隔的秒数,注意是间隔的秒数,不是毫秒数!

    整型CreateTime的转换

    在Java中,我们也常常会通过以下两种方式获取long类型的时间,先上代码:

    [java] view plaincopy
     
    1. /** 
    2.  * 演示Java中常常使用的获取long类型时间的两种方式 
    3.  */  
    4. public static void main(String[] args) {  
    5.     long longTime1 = System.currentTimeMillis();  
    6.     // 1373206143378  
    7.     System.out.println(longTime1);  
    8.   
    9.     long longTime2 = new java.util.Date().getTime();  
    10.     // 1373206143381  
    11.     System.out.println(longTime2);  
    12. }  

    上面两种获取long类型时间的方法是等价的,获取到的结果表示当时时间距离1970年1月1日0时0分0秒0毫秒的毫秒数,注意这里是毫秒数!那么这里获取到的long类型的时间怎样转换成标准格式的时间呢?方法例如以下:

    [java] view plaincopy
     
    1. /** 
    2.  * 演示Java中常常使用的获取long类型时间的两种方式 
    3.  */  
    4. public static void main(String[] args) {  
    5.     // 当前时间(距离1970年1月1日0时0分0秒0毫秒的毫秒数)  
    6.     long longTime = 1373206143378L;  
    7.       
    8.     String stdFormatTime = formatTime(longTime);  
    9.     // 输出:2013-07-07 22:09:03  
    10.     System.out.println(stdFormatTime);  
    11. }  
    12.   
    13. /** 
    14.  * 将long类型的时间转换成标准格式(yyyy-MM-dd HH:mm:ss) 
    15.  *  
    16.  * @param longTime 
    17.  * @return 
    18.  */  
    19. public static String formatTime(long longTime) {  
    20.     DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
    21.     return format.format(new Date(longTime));  
    22. }  

    上面演示了将一个long类型的时间转换成标准格式的时间,仅仅是简单的运用了SimpleDateFormat类,比較好懂的。那么再回到今天的主题上来,怎样将CreateTime转换成标准格式的时间。

    微信消息接口中的CreateTime表示距离1970年的秒数,而System.currentTimeMillis()表示距离1970年的毫秒数,它们之间的换算就相当于:1秒=1000毫秒,即将CreateTime乘以1000,就变成了距离1970年的毫秒数了,就能够使用上面的formatTime()方法来处理了,是不是非常easy呢?

    以下,我还是单另封装一个方法,用于将微信消息中的整型的消息创建时间CreateTime转换成标准格式的时间,例如以下:

    [java] view plaincopy
     
    1. /** 
    2.  * 将微信消息中的CreateTime转换成标准格式的时间(yyyy-MM-dd HH:mm:ss) 
    3.  *  
    4.  * @param createTime 消息创建时间 
    5.  * @return 
    6.  */  
    7. public static String formatTime(String createTime) {  
    8.     // 将微信传入的CreateTime转换成long类型,再乘以1000  
    9.     long msgCreateTime = Long.parseLong(createTime) * 1000L;  
    10.     DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
    11.     return format.format(new Date(msgCreateTime));  
    12. }  



    假设认为文章对你有所帮助,请通过留言或关注微信公众帐号xiaoqrobot来支持柳峰哦!

  • 相关阅读:
    如何让WPF程序用上MVVM模式
    wpf开源界面收集
    WPF界面框架的设计
    WPF数据验证
    WPF实用知识点
    wpf的MVVM框架
    数据库中树形结构的表的设计
    ASP.NET MVC 分部视图
    好用的 Visual Studio插件
    ASP.NET MVC3中Controller与View之间的数据传递总结
  • 原文地址:https://www.cnblogs.com/mfryf/p/3598277.html
Copyright © 2011-2022 走看看