Calendar 的一个Bug

今天晚上做网易有道难题的练习赛,第二题是一个计算时间的,题目如下:

我就直接用java 的API Calendar类中,开先居然把1s=60ms,悲剧啊,注意1s=1000ms,而且后来才发现,用setTimeInMillis(long time),多了8个小时,用Date类一样的,于是在网上搜了下,这个是时区的问题,郁闷。。。。于是收到了一篇文章这样写道:
-Duser.timezone=Asia/Shanghai
设置上面的参数就没问题了,但是这是比赛啊,大哥我怎么能设置环境啊,于是查看了API,用了这个setTimeZone(TimeZonevalue) 函数设置,setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")) ,但是悲剧的事情又发生了,还是不行啊,可能是我的环境的问题吧,或者是rp值不够高,唉。。。同学提醒了我说有C#里面有直接计算时间的函数,于是再一次查看API发现Calendar有个add方法可以,于是就用它了add(intfield, intamount) ,这个函数你把amount设置成负数就是减了,呵呵!而且内部会进行,前面的年、月、日的调整,比自己手动减8个小时方便多了,java的Calendar类真是太强大了,Date正逐步的被淘汰,呵呵!

上面是我在做题的时候发现的,希望能帮到不知道的朋友们!

你可能感兴趣的:(calendar)