java中Date的getTime()函数

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

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

要解析成中国的日期

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

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

<span style="color:#330000;">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.</span>

原来返回的是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,告诉你这是不可靠的,万一是别的国家的,时区不是东八,那就又乱错了)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值