首先介紹應用程序修改 :
AlarmManager mAlarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); mAlarmManager.setTimeZone("America/Santiago");// Asia/Taipei//GMT+08:00 // mAlarmManager.setTimeZone("Asia/Taipei"); TimeZone tz = TimeZone.getDefault(); // tz.setID("GMT+08:00");// Toast.makeText( this, "zone : " + tz.getID() + " itz : " + tz.getTimeZone("GMT+08:00"), Toast.LENGTH_SHORT) .show();
注意下面的一句 :
mAlarmManager.setTimeZone("America/Santiago");
"America/Santiago" 是XML一個ID值,這個ID值來自 : 下面xml中id后面的賦值
<timezone id="Pacific/Majuro">馬朱羅</timezone> <timezone id="Pacific/Midway">中途島</timezone> <timezone id="Pacific/Honolulu">檀香山</timezone> <timezone id="America/Anchorage">安克雷奇</timezone>
上面只列出部分項.
修改后,進入Setting->Date & Time->Select time zone項,既可以看到結果.
其次可以通過系統修改,通過系統修改是修改系統默認值:
Android 系統默認時區為GMT + 00:00,在設置中的“日期和時間”中可以看到,下面是修改默認時區的方法。
在Android源碼中找到Device/(設備或平台名稱)/(這里可能還有一層是編譯的代號之類的吧)/system.prop
在其中添加,若已存在則修改為 persist.sys.timezone=Asia/Shanghai
persist.sys.timezone屬性的對應值在如下文件中,frameworks\base\core\res\res\xml\time_zones_by_country.xml
這個xml文件中可以找到中國所在的 GMT + 8:00時區的對應值
<!-- CHINA, 8:00 --> <timezone code="cn">Asia/Shanghai</timezone> <timezone code="cn">Asia/Harbin</timezone> <timezone code="cn">Asia/Chongqing</timezone> <timezone code="cn">Asia/Urumqi</timezone> <timezone code="cn">Asia/Kashgar</timezone>
修改完之后需要重新編譯整個系統,編譯后的結果在/out/target/product/(以設備平台名稱編譯版本命名的文件夾)/system/build.prop中可以看到。
system.prop 這個文件中還可以修改其他一些默認屬性,例如默認的顯示語言和國家區域如下:
ro.product.locale.language=zh ro.product.locale.region=CN
http://www.cnblogs.com/wuwangSaber/archive/2012/09/03/2669714.html