Android和Linux的时间戳

来源:互联网 发布:杭州淘宝美工培训 编辑:程序博客网 时间:2024/06/14 23:28

Android和Linux的时间戳的起点一样,都是从1970年1月1日开始,但是并不是从00:00:00开始的,而是从08:00:00开始的,我说的是北京时间。

太坑了,之前一直以为时间戳的0对应的就是00:00:00。只能怪我们是东八区的,所以安卓里面如果设置闹钟事件(AlarmManager)如果没有搞清楚时间的起点,那基本上闹钟就不会准时开启了。

Android或Java里面获取事件System.currentTimeMillis()获取到的是从计时起点经过的毫秒数。

之前每次想要取当日0点时刻使用的是:
System.currentTimeMillis() / 3600000l / 24 * 3600000l * 24
想要获取当前的小时使用的是:
(System.currentTimeMillis() % (3600000l * 24)) / 3600000l

这样在中国指定是不对的,即使自己对时区进行了处理还是有点费事,推荐使用Calendar类来操作时间。

上述过程可以改写为:

Calendar calendar = Calendar.getInstance();calendar.setTimeInMillis(System.currentTimeMillis());calendar.set(Calendar.HOUR, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(Calendar.MILLISECOND, 0);

使用calendar.getTimeInMillis()获取当日0点时刻毫秒数。
同样可以用calendar.get(Calendar.HOUR)获取当前小时数。

0 0