JAVA得到两个时间的时间差(精确到毫秒)
(2016-10-18 11:08:23)
标签:
gettime |
分类: JAVA |
这里主要采用了gettime()函数,此函数返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。记住,这里GMT是
SimpleDateFormat dfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
今天在处理facebook的json时间时,遇到了一个问题,整整困扰了一下午,吃完饭才想出来。
facebook给的时间格式"yyyy-MM-ddTHH:mm:ss+0000"
要解析成中国的日期
boss之前的Utils都是转换成毫秒级去比对的,我也不好去改,就也转换着去做,结果发现当日期的时间小于08:00:00的时候,就会报错(不要问我是怎么知道的,我从一天,12小时,又以为是24小时制和12小时制的转换,各种都试了,然后就发现了)。
估摸着是格林尼治时间,接着就去看方法的doc,发现了是Date.getTime()的问题。
[java] view plain
copy
- "color:#330000;">public
long getTime () -
Added
in API level 1 - Returns
this Date 1,as a millisecond value. The value is the number of milliseconds since Jan. 1970, midnight GMT. -
Returns
-
the
number of milliseconds since Jan. 1, 1970, midnight GMT.
原来返回的是GMT啊,然后就去找解决办法了。
就这么做:
[java] view plain
copy
- private
static long dateToMillisecond(String throwsdate) 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,告诉你这是不可靠的,万一是别的国家的,时区不是东八,那就又乱错了)。