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)获取当前小时数。

更多相关文章

  1. Android获取内置、外置以及OTG等方式挂载的存储设备路径
  2. Android获取当前应用分配的最大内存和目前使用内存的方法
  3. 自定义样式日期时间选择对话框控件(精简版)
  4. 针对Android(安卓)模拟器启动慢的问题,长时间显示 Android(安卓)L
  5. Android基于IIS的APK下载(三)用JSON传输更新数据
  6. Android滚轮时间选择控件(可扩展自定义)
  7. 打造史上最简单,最实用的Log工具类
  8. 我的安卓应用——SchoolSystem的代码展示
  9. android-从音频数据库获取音乐数据

随机推荐

  1. Android提高二十一篇
  2. 收藏android源码项目
  3. Android(安卓)内存监测工具 DDMS --> Hea
  4. 【Android】getColor(int id)在API23时过
  5. Android(安卓)Handler 深入学习(2)
  6. Android(安卓)自定义时间选择对话框
  7. INSTALL_FAILED_MISSING_SHARED_LIBRARY
  8. Android(安卓)4.0源码下载
  9. Android中的按键监听
  10. android系统设置-修改睡眠时间,修改背光强