解析接口中的消息创建时间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
/**
* 演示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] view plaincopy
/**
* 演示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转换成标准格式的时间,如下:
[java] view plaincopy
/**
* 将微信消息中的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));
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java的MetaObjectHandler是Mybatis框架用于处理实体类的公共字段的接口,它提供了在插入和更新操作时自动填充实体类的公共字段的方法。 在Mybatis,每个实体类都有一些公共字段,例如创建时间、更新时间创建人、更新人等等,这些字段通常是每个实体类都会有的。为了避免每次插入和更新操作都需要手动给这些字段赋值,Mybatis提供了MetaObjectHandler接口,通过实现该接口,并在Mybatis的配置文件指定该实现类,可以在插入和更新操作时自动填充实体类的公共字段。 MetaObjectHandler接口的定义如下: ```java public interface MetaObjectHandler { void insertFill(MetaObject metaObject); void updateFill(MetaObject metaObject); } ``` 该接口定义了两个抽象方法insertFill和updateFill,这两个方法分别用于在插入和更新操作时自动填充实体类的公共字段。 MetaObject是Mybatis框架用于封装Java对象的一个通用类,通过反射获取Java对象的属性和方法,从而实现对Java对象的读写操作。MetaObjectHandler的insertFill和updateFill方法参数的MetaObject对象就是Java对象的封装类,可以通过该对象来获取Java对象的属性和方法,从而实现对实体类的公共字段的填充操作。 下面是一个示例代码,演示了如何在实体类自动填充创建时间和更新时间: ```java public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { LocalDateTime now = LocalDateTime.now(); this.setFieldValByName("createTime", now, metaObject); this.setFieldValByName("updateTime", now, metaObject); } @Override public void updateFill(MetaObject metaObject) { LocalDateTime now = LocalDateTime.now(); this.setFieldValByName("updateTime", now, metaObject); } } ``` 在上述示例代码,我们实现了MetaObjectHandler接口,并重写了其的insertFill和updateFill方法。在insertFill方法,我们获取当前时间,并通过setFieldValByName方法将其赋值给实体类的createTime和updateTime字段;在updateFill方法,我们同样获取当前时间,并将其赋值给实体类的updateTime字段。 最后,我们需要在Mybatis的配置文件配置MyMetaObjectHandler: ```xml <!-- 配置自定义的MetaObjectHandler --> <bean id="myMetaObjectHandler" class="com.example.MyMetaObjectHandler"/> <!-- 配置全局的MetaObjectHandler --> <mybatis:configuration> <mybatis:defaultScriptingLanguage type="org.apache.ibatis.scripting.xmltags.XMLLanguageDriver"> <mybatis:property name="metaObjectHandler" ref="myMetaObjectHandler"/> </mybatis:defaultScriptingLanguage> </mybatis:configuration> ``` 在上述配置文件,我们通过id为myMetaObjectHandler的bean来配置自定义的MetaObjectHandler,然后通过属性metaObjectHandler将其注入到Mybatis的配置。这样,我们就可以在插入和更新操作时自动填充实体类的公共字段了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值