Android和Linux的时间戳
16lz
2021-01-26
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)
获取当前小时数。
更多相关文章
- Android获取内置、外置以及OTG等方式挂载的存储设备路径
- Android获取当前应用分配的最大内存和目前使用内存的方法
- 自定义样式日期时间选择对话框控件(精简版)
- 针对Android(安卓)模拟器启动慢的问题,长时间显示 Android(安卓)L
- Android基于IIS的APK下载(三)用JSON传输更新数据
- Android滚轮时间选择控件(可扩展自定义)
- 打造史上最简单,最实用的Log工具类
- 我的安卓应用——SchoolSystem的代码展示
- android-从音频数据库获取音乐数据