今天在处理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,告诉你这是不可靠的,万一是别的国家的,时区不是东八,那就又乱错了)。