Calendar 的一个Bug

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

描述 在著名的unix系统中,使用了一种简洁高效的时间表示方法,即: 将1970年1月1日0点作为“unix纪元”的原点,从1970年1月1日开始经过的秒数存储为一个32位整数 请编写一个程序,帮助把一个unix时间辍,转换成形如"YYYY-mm-dd HH:ii:ss"的格式,其中的字母分别代表 YYYY 4 位数字完整表示的年份 mm 数字表示的月份,有前导零的 2 位数字 dd 月份中的第几天,有前导零的2位数字 HH 小时,24 小时格式,有前导零 ii 有前导零的分钟数 ss 秒数,有前导零 输入 输入数据有若干行,每行包含一个整数t,(0<=t<2^31) 输出 对每一行输入数据,输出一行,为形如“YYYY-mm-dd HH:ii:ss”格式的时间 样例输入 10 1234567890 样例输出 1970-01-01 00:00:10 2009-02-13 23:31:30 我就直接用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正逐步的被淘汰,呵呵!
上面是我在做题的时候发现的,希望能帮到不知道的朋友们!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值