
android平台,经常会遇到产品需要更改系统默认时区日期时间的问题。android更改时区相对比较容易实现,网上也有很多资料,直接设置一个属性即可,例如设置上海东八区,persistsystimezone=Asia/Shanghai。但是如何实现更改默认系统时间呢?
在android中,Linux内核中、rtc时钟,默认的起始日期都是1970年1月1日,那么如何把默认日期指到2012-01-01呢?笔者在实践中发现,在RTC驱动中可以很容易实现。在RTC驱动加载的时候,一般都有个probe函数需要先执行,因此在probe函数里下手最直接有效。RTC从1970-01-01开始,那当然很容易把默认值设置到2012-01-01,所需要设置的seconds也就是从1970-01-01所差的秒数,以秒为单位。因此,一旦读出来的RTC值小于我们预想的值比如2012-01-01(1325402913)小,我们就把它设置到这个时间点。
seconds = rtc_read_time();
printk("init PMU/RTC time to %ld \n", seconds);
if(seconds <= 1325402913) {
seconds = 1325402913;/2012-01-01/
ret = rtc_set_time(seconds);
RTC_DBG("Init Set time: %ld, ret =0x%x\n", seconds, ret);
}
笔者通过结果显示,在android平台上是可行的。要设置到哪天几点几分,只要算好具体1970-01-01 00:00差的秒数即可,简单明了。这样客户、用户使用起来更方便一些。
安卓开发app有时候存在时区的设置,可能有时候这样设置时区
AlarmManager mAlarmManager = (AlarmManager) getSystemService(ContextALARM_SERVICE);
mAlarmManagersetTimeZone("GMT+08:00");
导致其他应用时间发生错乱,可以修改这样设置时区,或许可以解决问题
TimeZone chinaTimeZone = TimeZonegetTimeZone("GMT+8");
TimeZonesetDefault(chinaTimeZone);
注::EEEE :是星期的
主要有三个属性
1format12Hour :当设备是12小时制时的显示格式
2format24Hour :当设备是24小时制时的显示格式
3timeZone :指定时区,与当前设备的时区比较之后,显示指定时区的时间
这里有三个TextClock
当前时区就是上海的时区,所以1跟2是一样的,3是东京时间,比北京时间快一个小时,
效果图如下:
>
SimpleDateFormat localFromat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
localFromatsetTimeZone(TimeZonegetTimeZone("GMT+8:00"));
Date oldDate = localFromatparse(date);
时区转换一下
以上就是关于如何修改android系统默认时区全部的内容,包括:如何修改android系统默认时区、关于安卓手机app开发中时区设置、Android TextClock时间格式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)