gettime 函数 java_java中Date的getTime()函数

今天在处理facebook的json时间时,遇到了一个问题,整整困扰了一下午,吃完饭才想出来。

facebook给的时间格式"yyyy-MM-ddTHH:mm:ss+0000"

要解析成中国的日期

boss之前的Utils都是转换成毫秒级去比对的,我也不好去改,就也转换着去做,结果发现当日期的时间小于08:00:00的时候,就会报错(不要问我是怎么知道的,我从一天,12小时,又以为是24小时制和12小时制的转换,各种都试了,然后就发现了)。

估摸着是格林尼治时间,接着就去看方法的doc,发现了是Date.getTime()的问题。

public long getTime ()

Added in API level 1

Returns this Date as a millisecond value. The value is the number of milliseconds since Jan. 1, 1970, midnight GMT.

Returns

the number of milliseconds since Jan. 1, 1970, midnight GMT.

原来返回的是GMT啊,然后就去找解决办法了。

就这么做:

private static long dateToMillisecond(String date) throws ParseException {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss+0000");

sdf.setTimeZone(TimeZone.getTimeZone("GMT"));

Date dt = sdf.parse(date);

System.out.println(dt.getTime());

return dt.getTime();

}

直接在得到数据的时候,默认设成gmt的时区,这样就没了时区的区分了。(

不要想着我是东八区,就加8*60*60*1000ms,告诉你这是不可靠的,万一是别的国家的,时区不是东八,那就又乱错了)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值