时间1970-1-1 0:0无法设置的代码调用和原因

根因:时间设置从01:01起始,而非00:00起始

1. 从界面布局定位到时间设置DateTimeSettings.java

packages/apps/Settings/src/com/android/settings/DateTimeSettings.java

static void setTime(Context context, int hourOfDay, int minute) {
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, hourOfDay);Log.d("lp","setTime:" + "hourOfDay:" + hourOfDay + "Calendar.HOUR_OF_DAY:" + Calendar.HOUR_OF_DAY);
c.set(Calendar.MINUTE, minute);Log.d("lp","Calendar.MINUTE:" + Calendar.MINUTE + "minute:" + minute);
c.set(Calendar.SECOND, 0);Log.d("lp","Calendar.SECOND:" + Calendar.SECOND);
c.set(Calendar.MILLISECOND, 0);Log.d("lp","Calendar.MILLISECOND:"+Calendar.MILLISECOND);
long when = c.getTimeInMillis();Log.d("lp","when:" + when + "Integer.MAX_VALUE" + Integer.MAX_VALUE);
if (when / 1000 < Integer.MAX_VALUE) {((AlarmManager) context.getSystemService(Context.ALARM_SERVICE)).setTime(when);}
}

Log信息如下:

D/lp    ( 6873): onPreferenceTreeClick:
D/lp    ( 6873): onTimeSet:
D/lp    ( 6873): setTime:hourOfDay:0Calendar.HOUR_OF_DAY:11
D/lp    ( 6873): Calendar.MINUTE:12minute:0
D/lp    ( 6873): Calendar.SECOND:13
D/lp    ( 6873): when:1406764800000Integer.MAX_VALUE2147483647D/lp    ( 6873): onPreferenceTreeClick:
D/lp    ( 6873): onTimeSet:
D/lp    ( 6873): setTime:hourOfDay:0Calendar.HOUR_OF_DAY:11
D/lp    ( 6873): Calendar.MINUTE:12minute:0
D/lp    ( 6873): Calendar.SECOND:13
D/lp    ( 6873): when:1406761200000Integer.MAX_VALUE2147483647D/lp    ( 6873): onPreferenceTreeClick:
D/lp    ( 6873): onTimeSet:
D/lp    ( 6873): setTime:hourOfDay:1Calendar.HOUR_OF_DAY:11
D/lp    ( 6873): Calendar.MINUTE:12minute:1
D/lp    ( 6873): Calendar.SECOND:13
D/lp    ( 6873): when:60000Integer.MAX_VALUE2147483647D/lp    ( 6873): onPreferenceTreeClick:
D/lp    ( 6873): onTimeSet:
D/lp    ( 6873): setTime:hourOfDay:1Calendar.HOUR_OF_DAY:11
D/lp    ( 6873): Calendar.MINUTE:12minute:0
D/lp    ( 6873): Calendar.SECOND:13
D/lp    ( 6873): when:0Integer.MAX_VALUE2147483647

2.frameworks时间设定DatePicker.java

static void configureDatePicker(DatePicker datePicker) {
// The system clock can't represent dates outside this range.
Calendar t = Calendar.getInstance();
t.clear();
t.set(1970, Calendar.JANUARY, 1);
datePicker.setMinDate(t.getTimeInMillis());
t.clear();
t.set(2036, Calendar.DECEMBER, 31);
datePicker.setMaxDate(t.getTimeInMillis());
}
//设置日期时间起始及结束日期

frameworks/base/core/java/android/widget/DatePicker.java

public void setMinDate(long minDate) {
mTempDate.setTimeInMillis(minDate);
if (mTempDate.get(Calendar.YEAR) == mMinDate.get(Calendar.YEAR)
&& mTempDate.get(Calendar.DAY_OF_YEAR) != mMinDate.get(Calendar.DAY_OF_YEAR)) {
return;
}
mMinDate.setTimeInMillis(minDate);
mCalendarView.setMinDate(minDate);
if (mCurrentDate.before(mMinDate)) {
mCurrentDate.setTimeInMillis(mMinDate.getTimeInMillis());
updateCalendarView();
}updateSpinners();
}
//限定最小及最大日期

3.UTC 和GMT

协调世界时,又称世界统一时间,世界标准时间,国际协调时间。简称UTC。

协调世界时是以原子时秒长为基础,在时刻上尽量接近于世界时的一种时间计量系统。

格林尼治标准时间(Greenwich Mean Time,GMT)是指位于伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。理论上来说,格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时的时间。由于地球在它的椭圆轨道里的运动速度不均匀,这个时刻可能和实际的太阳时相差16分钟。地球每天的自转是有些不规则的,而且正在缓慢减速。所以,格林尼治时间已经不再被作为标准时间使用。现在的标准时间——协调世界时(UTC)——由原子钟提供。自1924年2月5日开始,格林尼治天文台每隔一小时会向全世界发放调时信息。而UTC是基于标准的GMT提供的准确时间。

相关查阅资料链接:

http://www.iteye.com/problems/10232

http://blog.csdn.net/kunkun378263/article/details/22681733

http://baike.baidu.com/link?url=ii7Z5tY3wTbd3LpqzVkyJPpVmwF6DPkZrhNikgeNYvj1Lw16Flm6FzcPrgqXkpBDlSWvMLWpnMMOrPQUTGBmXq

http://zhidao.baidu.com/link?url=fCj9Fdj9BkRmsM3y6Ru3TI0glI2ONx-FjQjXI3svxs5ss-Y1QJ4zT1ElPL9IWa_pLEJqMzIuzoDVY_pnRy8mlq

Android世界时钟-时间1970-1-1 0:0无法设置的代码调用和原因相关推荐

  1. android 日倒计时计算器,分秒倒数日app下载-分秒倒数日(时间计算器)安卓版下载 v2.0.0安卓版_5577安卓网...

    分秒倒数日安卓版app下载分享给大家,这是一款非常好用的时间管理神奇,用户可以使用这款软件记录重要的时间,可以设置与恋人相恋的时间,也可以设置高考的倒数日,非常的方便,感兴趣的用户快来本站下载吧. [ ...

  2. Android动态权限管理模型(4.3-6.0)

    Google从4.3开始就试图引入AppOpsManager动态权限管理模型,但是,由于感觉技术不太成熟,在Release版本中,这个功能都是被隐藏掉的,所以官方Rom一直没有动态权限管理机制.直到A ...

  3. android beta项目官方页面,安卓7.0开发者预览版如何安装?Android Beta项目正式上线...

    谷歌现在越来越不按常理出牌了,今天早些时候,他们已经提前秀出了Android 7.0.从最新亮相的Android N开发者预览版来看,谷歌进行了一些调整,但更重要的是,增加了一些新的功能,比如分屏.新 ...

  4. Android jPBC 2.0.0配置与测试

    我在前面的一片博客中,介绍了jPBC 2.0.0在PC平台上面的配置和测试.既然jPBC是Java平台上面实现的,那么jPBC能不能在Android这个以Java为主要语言的平台上运行呢?这样一来,各 ...

  5. Android 启动优化(五)- AnchorTask 1.0.0 版本正式发布了

    今天,更新一下 Android 启动优化有向无环图系列的最后一篇文章.最近一段时间,暂时不会更新这方面的文章了.系列文章汇总如下: Android 启动优化(一) - 有向无环图 Android 启动 ...

  6. 模板-测试计划-AAA系统android应用V1.0.0测试计划

    AAA系统android应用V1.0.0测试计划 版本控制 版本号 日期 作者 审核人 说明 V1.0 目录 产品v1.0.0测试计划模板 1 1 项目简介部分 2 1.1 文档编写目的 2 1.2 ...

  7. 华为荣耀9的android版本号,华为/荣耀公布EMUI 9.0机型升级进度

    IT之家12月5日消息 花粉俱乐部今日汇总了华为各类机型的EMUI 9.0升级进度,不妨一起来看一下. 不限量升级 从11月10日开始,已经有9款机型开启了会员不限量升级: P20.P20 Pro.M ...

  8. Android音视频学习系列(七) — 从0~1开发一款Android端播放器(支持多协议网络拉流本地文件)

    系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...

  9. 华为荣耀10体验android9,荣耀10 P 版本(EMUI 9.0+Android 9.0) 体验版 9.0.0.120发布说明...

    本帖最后由 gameria 于 2018-10-31 09:46 编辑 荣耀10P版本(EMUI 9.0+Android 9.0) 体验版 9.0.0.120发布说明 感谢各位花粉的支持,欢迎大家体验 ...

最新文章

  1. LeetCode简单题之在区间范围内统计奇数数目
  2. 入门 | CNN也能用于NLP任务,一文简述文本分类任务的7个模型
  3. 线程组名称_Netty在Dubbo中的线程名称
  4. Elasticsearch 与 Kafka 整合剖析
  5. php随机数、时间、字符串函数,正则,数组函数
  6. nyoj-483--Nightmare--BFS+允许回头
  7. 经典基础算法之面试题(系列一)
  8. [机器学习-sklearn]K-means之make_blobs聚类数据生成器
  9. C++primer 10.5.1节练习
  10. 0-1背包问题(回溯算法)
  11. 独立开发一个完整的小程序,你想知道的流程
  12. 2022年电子商务概论(农)之形考作业一
  13. 今日头条笔试面试大全
  14. HP5100常见错误代码
  15. tplink虚拟服务器 tcp,关于TP-Link路由器端口映射详解
  16. 移动硬盘插入电脑后不显示盘符
  17. “黑桃A” 11月19日团队实训总结
  18. UE4-角色摄像机镜头的设置
  19. GPS从入门到放弃(十七) --- 对流层延时
  20. NVMe1.4 Admin Command学习(1)-- format identify

热门文章

  1. AI 作画卖出300万高价;People.ai 融资2亿;NIPS 涉嫌色情侮辱女性;百度推出实时翻译...
  2. Matlab图形x轴和y轴插入标注
  3. 南京做计算机实施方案,2018年南京市中小学电脑制作活动暨.doc
  4. ios开发者账户取消订阅
  5. ODOO开发教程之透视表
  6. 透视色轮(超赞的设计色彩研究)
  7. 北醒发布长距固态激光雷达,完成B2轮融资 | CES 2019...
  8. 技巧!笔记本电脑wifi图标无线不显示?连接不上?一招解决wifi网络问题------小白电脑的那些事
  9. QQ可以传输多大的文件
  10. 照魔兽世界食谱做肉餐