java国际化之时区问题处理

在国际化的项目中需要处理的日期时间问题主要有两点:

1、日期时间的国际化格式问题处理;

2、日期时间的时区问题处理,这两个问题要区分开,不要弄混了。

 

日期时间国际化化格式处理

 

对应的关键词:Locale

日期时间的国际化格式指的是在不同的国家和地区对日期时间的显示方式不同,主要通过不同国家地区不同的语言习惯,对同一个实现的呈现方式不同。在java中需要结合Locale类进行处理:

Java代码  收藏代码

  1. public static void main(String[] args) {  
  2.         Date date = new Date();  
  3.         Locale locale = Locale.CHINA;  
  4.         DateFormat shortDf = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM, locale);  
  5.         System.out.println("中国格式:"+shortDf.format(date));  
  6.    
  7.         locale = Locale.ENGLISH;  
  8.         shortDf = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM, locale);  
  9.         System.out.println("英国格式:"+shortDf.format(date));  
  10. }  
  11.    

 执行mian方法,结果为:

Java代码  收藏代码

  1. 中国格式:2017-10-12 10:29:44  
  2. 英国格式:Oct 122017 10:29:44 AM  
  3.    

 

在Spring MVC项目中,一般可以借助spring自动的国际化解决方案,在视图层对不同的国家使用不同的locale参数进行处理。

 

日期时间国际化化时区处理

 

对应的关键词:TimeZone

日期时间的时区问题,指的是在同一时刻,地球上的各个地区的日期时间不同。全球划分为24个时区,每个相邻时区时间相差一个小时(中国为了方便统一,虽然跨越5个时区,但都使用同一个时区时间),也就是说在同一时刻,全球同一时刻对应的当地时间的小时数有可能是0-23点之间的一个值。这里拿中国上海和英国伦敦举例:

Java代码  收藏代码

  1. public static void main(String[] args) {  
  2.         Date date = new Date();  
  3.         Locale locale = Locale.CHINA;  
  4.         DateFormat shortDf = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM, locale);  
  5.         shortDf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));//Asia/Chongqing  
  6.         System.out.println(TimeZone.getDefault().getID());  
  7.         System.out.println("中国当前日期时间:" + shortDf.format(date));  
  8.    
  9.         locale = Locale.ENGLISH;  
  10.         shortDf = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM, locale);  
  11.         shortDf.setTimeZone(TimeZone.getTimeZone("Europe/London"));  
  12.         System.out.println("英国当前日期时间:"+shortDf.format(date));  
  13.     }  
  14.    

 

执行main方法,运行结果为:

Java代码  收藏代码

  1. 中国当前日期时间:2017-10-12 10:55:55  
  2. 英国当前日期时间:Oct 122017 3:55:55 AM  

说明同一时刻,中国上海和英国伦敦相差7个小时,也就是相差7个时区。

 

时区对国际化项目带来的问题

 

日期时间的国际化格式处理 只是显示风格问题 相对来说比较简单,但日期时间的国际化时区问题 确比较麻烦,如果处理不当会引起一些兼容性问题。

 

拿最近做的一个泰国项目举例,我们一个活动页创建项目部署在泰国。如果在中国创建一个活动页,通过时间控件选择活动的开始时间,这时获取的时间是从浏览器获取 为中国时区时间。需要把这个时间传到后端服务器,存储到数据库,但服务器的时间为泰国时区的时间。中国是东八区 泰国是东七区,相差一个小时。这时有两种处理办法:

1、前端传给后端的是字符串,比如开始时间为“2017-10-12 08:00:00”, 后端直接使用这个字符串转换为泰国的Date 存入数据库即可。

Java代码  收藏代码

  1. public static void main(String[] args) throws Exception{  
  2.         String t="2017-10-12 08:00:00";  
  3.         DateFormat format =  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  4.         Date date = format.parse(t);  
  5.         System.out.println(date);  
  6.     }  
  7.    

 

看起来比较简单,但关键是这个字符串,前面说了 不同的语言国家这个字符的格式不同,后端需要根据不同的格式进行Format操作。假设换成在英国创建活动,这个Format又得改成英国的格式。

 

2、前端传给后端的是时间戳,比如开始时间为“2017-10-12 08:00:00”,对应的中国的时间戳为:1507766400000,转换成泰国的时间就变成:“2017-10-12 07:00:00”,模拟代码如下:

 

Java代码  收藏代码

  1. public static void main(String[] args) throws Exception{  
  2.         String t="2017-10-12 08:00:00";//页面传入的时间  
  3.         DateFormat format =  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  4.         Date date = format.parse(t);  
  5.         System.out.println("中国:"+t);  
  6.    
  7.    
  8.         long tl = date.getTime();//模拟前端转换为中国的时间戳  
  9.         TimeZone timeZone2 = TimeZone.getTimeZone("Asia/Bangkok");  
  10.         format.setTimeZone(timeZone2);  
  11.         String d2 = format.format(tl);  
  12.         System.out.println("泰国:"+d2);//存入数据库的时间  
  13. }  

 

 

执行结果为:

Java代码  收藏代码

  1. 中国:2017-10-12 08:00:00  
  2. 泰国:2017-10-12 07:00:00  

说明直接传给后端时间搓有问题,但有解决办法:首先后端封装一个接口后获取服务器相对GMT(格林尼治标准时间)时间的偏移量:

Java代码  收藏代码

  1. TimeZone zone = TimeZone.getDefault();  
  2. System.out.println(zone.getRawOffset());  

这段代码放在不同时区的服务器上执行结果会不同(前提是服务器的时区设置跟本地时区一致)。如果在泰国执行结果为25200000ms,换算成小时为7,说明泰国的时区的偏移量相对于GMT标准时间相差7小时。下文简称“时区偏移量”。

 

以下操作都在浏览器中通过js代码实现:

前端首先调用该接口获取服务器的时区偏移量,再在浏览器上获取本地的时区偏移量,计算出两个偏移量的差值。本地浏览器上获取当前的时间戳,减去上一步计算出来的差值即可得到服务器这个时间的时间戳,把这个时间戳传给后端 再转换成时间,就是服务器对应的时间,存入数据库即可。

Js代码  收藏代码

  1.    
  2. //服务的时区偏移量,通过接口获得,注意换成负值  
  3. var serveroffset=-25200000;  
  4. var d = new Date();  
  5. //获取本地浏览器的时区偏移量  
  6. var localOffset = d.getTimezoneOffset() * 60000;  
  7. //的到本地和偏移量的差值  
  8. var deffoffset=localOffset-(serveroffset);  
  9. //获取本地浏览器时间戳  
  10. var localTime = d.getTime();  
  11. //计算出传到服务器的时间戳  
  12. var servertime=localTime+deffoffset;  

通过上述方式,可以实现服务器全球各地部署,系统都可以正常使用。

 

Java中的TimeZone类

 

Java中处理时区使用的是TimeZone类,通过TimeZone.getTimeZone(String id)方法可以获取到指定时区的TimeZone实例,通过TimeZone实例可以获取到相对于GMT标准时间的偏移量。该方法的参数ID可以是GMT、 UTC、CST等时区,也可以是城市名:

 

Java代码  收藏代码

  1. public static void main(String[] args) throws Exception{  
  2.    
  3.         TimeZone timeZone1 = TimeZone.getDefault();//获取当前服务器时区  
  4.         TimeZone timeZone2 = TimeZone.getTimeZone("Asia/Shanghai");//获取上海时区  
  5.         TimeZone timeZone3 = TimeZone.getTimeZone("GMT");//获取格林威治标准时区  
  6.         TimeZone timeZone4 = TimeZone.getTimeZone("GMT+8");//获取东八区时区  
  7.         TimeZone timeZone5 = TimeZone.getTimeZone("UTC");//获取UTC标准时间  
  8.         TimeZone timeZone6 = TimeZone.getTimeZone("CST");//获取CST时区  
  9.    
  10.         System.out.println(timeZone1.getRawOffset());  
  11.         System.out.println(timeZone2.getRawOffset());  
  12.         System.out.println(timeZone3.getRawOffset());  
  13.         System.out.println(timeZone4.getRawOffset());  
  14.         System.out.println(timeZone5.getRawOffset());  
  15.         System.out.println(timeZone6.getRawOffset());  
  16.     }  
  17.    

 运行结果:

Java代码  收藏代码

  1. 28800000  
  2. 28800000  
  3. 0  
  4. 28800000  
  5. 0  
  6. -21600000  

 

GMT和 UTC可以视为几乎是等同的,UTC更精准,有闰秒的概念。

其中TimeZone.getTimeZone("Asia/Shanghai")和TimeZone.getTimeZone("GMT+8")是相同的,可以相互替换使用。又比如泰国的时区ID使用"Asia/Bangkok"和"GMT+7"是相同。

 

通过阅读jdk源码可以发现,TimeZone ID是在java里ZoneInfoFile类加载的。在jvm初始化的时候,会读取jdk安装目录下的 ${ java.home } /jre/lib/tzdb.dat,放到其成员变量为zones的ConcurrentHashMap里。当调用TimeZone.getTimeZone(id)方法时,会用id到这个map里进行匹配获取到指定id的时区。

 

最后附上TimeZone 的ID列表,要获取对应城市的时区,需要先查询到其对应的ID,对应的其实就是 ${ java.home } /jre/lib/tzdb.dat文件中的内容。

Java代码  收藏代码

  1.    
  2. Etc/GMT+12  
  3. Etc/GMT+11  
  4. MIT  
  5. Pacific/Apia  
  6. Pacific/Midway  
  7. Pacific/Niue  
  8. Pacific/Pago_Pago  
  9. Pacific/Samoa  
  10. US/Samoa  
  11. America/Adak  
  12. America/Atka  
  13. Etc/GMT+10  
  14. HST  
  15. Pacific/Fakaofo  
  16. Pacific/Honolulu  
  17. Pacific/Johnston  
  18. Pacific/Rarotonga  
  19. Pacific/Tahiti  
  20. SystemV/HST10  
  21. US/Aleutian  
  22. US/Hawaii  
  23. Pacific/Marquesas  
  24. AST  
  25. America/Anchorage  
  26. America/Juneau  
  27. America/Nome  
  28. America/Yakutat  
  29. Etc/GMT+9  
  30. Pacific/Gambier  
  31. SystemV/YST9  
  32. SystemV/YST9YDT  
  33. US/Alaska  
  34. America/Dawson  
  35. America/Ensenada  
  36. America/Los_Angeles  
  37. America/Tijuana  
  38. America/Vancouver  
  39. America/Whitehorse  
  40. Canada/Pacific  
  41. Canada/Yukon  
  42. Etc/GMT+8  
  43. Mexico/BajaNorte  
  44. PST  
  45. PST8PDT  
  46. Pacific/Pitcairn  
  47. SystemV/PST8  
  48. SystemV/PST8PDT  
  49. US/Pacific  
  50. US/Pacific-New  
  51. America/Boise  
  52. America/Cambridge_Bay  
  53. America/Chihuahua  
  54. America/Dawson_Creek  
  55. America/Denver  
  56. America/Edmonton  
  57. America/Hermosillo  
  58. America/Inuvik  
  59. America/Mazatlan  
  60. America/Phoenix  
  61. America/Shiprock  
  62. America/Yellowknife  
  63. Canada/Mountain  
  64. Etc/GMT+7  
  65. MST  
  66. MST7MDT  
  67. Mexico/BajaSur  
  68. Navajo  
  69. PNT  
  70. SystemV/MST7  
  71. SystemV/MST7MDT  
  72. US/Arizona  
  73. US/Mountain  
  74. America/Belize  
  75. America/Cancun  
  76. America/Chicago  
  77. America/Costa_Rica  
  78. America/El_Salvador  
  79. America/Guatemala  
  80. America/Indiana/Knox  
  81. America/Indiana/Tell_City  
  82. America/Knox_IN  
  83. America/Managua  
  84. America/Menominee  
  85. America/Merida  
  86. America/Mexico_City  
  87. America/Monterrey  
  88. America/North_Dakota/Center  
  89. America/North_Dakota/New_Salem  
  90. America/Rainy_River  
  91. America/Rankin_Inlet  
  92. America/Regina  
  93. America/Swift_Current  
  94. America/Tegucigalpa  
  95. America/Winnipeg  
  96. CST  
  97. CST6CDT  
  98. Canada/Central  
  99. Canada/East-Saskatchewan  
  100. Canada/Saskatchewan  
  101. Chile/EasterIsland  
  102. Etc/GMT+6  
  103. Mexico/General  
  104. Pacific/Easter  
  105. Pacific/Galapagos  
  106. SystemV/CST6  
  107. SystemV/CST6CDT  
  108. US/Central  
  109. US/Indiana-Starke  
  110. America/Atikokan  
  111. America/Bogota  
  112. America/Cayman  
  113. America/Coral_Harbour  
  114. America/Detroit  
  115. America/Fort_Wayne  
  116. America/Grand_Turk  
  117. America/Guayaquil  
  118. America/Havana  
  119. America/Indiana/Indianapolis  
  120. America/Indiana/Marengo  
  121. America/Indiana/Petersburg  
  122. America/Indiana/Vevay  
  123. America/Indiana/Vincennes  
  124. America/Indiana/Winamac  
  125. America/Indianapolis  
  126. America/Iqaluit  
  127. America/Jamaica  
  128. America/Kentucky/Louisville  
  129. America/Kentucky/Monticello  
  130. America/Lima  
  131. America/Louisville  
  132. America/Montreal  
  133. America/Nassau  
  134. America/New_York  
  135. America/Nipigon  
  136. America/Panama  
  137. America/Pangnirtung  
  138. America/Port-au-Prince  
  139. America/Resolute  
  140. America/Thunder_Bay  
  141. America/Toronto  
  142. Canada/Eastern  
  143. Cuba  
  144. EST  
  145. EST5EDT  
  146. Etc/GMT+5  
  147. IET  
  148. Jamaica  
  149. SystemV/EST5  
  150. SystemV/EST5EDT  
  151. US/East-Indiana  
  152. US/Eastern  
  153. US/Michigan  
  154. America/Caracas  
  155. America/Anguilla  
  156. America/Antigua  
  157. America/Aruba  
  158. America/Asuncion  
  159. America/Barbados  
  160. America/Blanc-Sablon  
  161. America/Boa_Vista  
  162. America/Campo_Grande  
  163. America/Cuiaba  
  164. America/Curacao  
  165. America/Dominica  
  166. America/Eirunepe  
  167. America/Glace_Bay  
  168. America/Goose_Bay  
  169. America/Grenada  
  170. America/Guadeloupe  
  171. America/Guyana  
  172. America/Halifax  
  173. America/La_Paz  
  174. America/Manaus  
  175. America/Marigot  
  176. America/Martinique  
  177. America/Moncton  
  178. America/Montserrat  
  179. America/Port_of_Spain  
  180. America/Porto_Acre  
  181. America/Porto_Velho  
  182. America/Puerto_Rico  
  183. America/Rio_Branco  
  184. America/Santiago  
  185. America/Santo_Domingo  
  186. America/St_Barthelemy  
  187. America/St_Kitts  
  188. America/St_Lucia  
  189. America/St_Thomas  
  190. America/St_Vincent  
  191. America/Thule  
  192. America/Tortola  
  193. America/Virgin  
  194. Antarctica/Palmer  
  195. Atlantic/Bermuda  
  196. Atlantic/Stanley  
  197. Brazil/Acre  
  198. Brazil/West  
  199. Canada/Atlantic  
  200. Chile/Continental  
  201. Etc/GMT+4  
  202. PRT  
  203. SystemV/AST4  
  204. SystemV/AST4ADT  
  205. America/St_Johns  
  206. CNT  
  207. Canada/Newfoundland  
  208. AGT  
  209. America/Araguaina  
  210. America/Argentina/Buenos_Aires  
  211. America/Argentina/Catamarca  
  212. America/Argentina/ComodRivadavia  
  213. America/Argentina/Cordoba  
  214. America/Argentina/Jujuy  
  215. America/Argentina/La_Rioja  
  216. America/Argentina/Mendoza  
  217. America/Argentina/Rio_Gallegos  
  218. America/Argentina/Salta  
  219. America/Argentina/San_Juan  
  220. America/Argentina/San_Luis  
  221. America/Argentina/Tucuman  
  222. America/Argentina/Ushuaia  
  223. America/Bahia  
  224. America/Belem  
  225. America/Buenos_Aires  
  226. America/Catamarca  
  227. America/Cayenne  
  228. America/Cordoba  
  229. America/Fortaleza  
  230. America/Godthab  
  231. America/Jujuy  
  232. America/Maceio  
  233. America/Mendoza  
  234. America/Miquelon  
  235. America/Montevideo  
  236. America/Paramaribo  
  237. America/Recife  
  238. America/Rosario  
  239. America/Santarem  
  240. America/Sao_Paulo  
  241. Antarctica/Rothera  
  242. BET  
  243. Brazil/East  
  244. Etc/GMT+3  
  245. America/Noronha  
  246. Atlantic/South_Georgia  
  247. Brazil/DeNoronha  
  248. Etc/GMT+2  
  249. America/Scoresbysund  
  250. Atlantic/Azores  
  251. Atlantic/Cape_Verde  
  252. Etc/GMT+1  
  253. Africa/Abidjan  
  254. Africa/Accra  
  255. Africa/Bamako  
  256. Africa/Banjul  
  257. Africa/Bissau  
  258. Africa/Casablanca  
  259. Africa/Conakry  
  260. Africa/Dakar  
  261. Africa/El_Aaiun  
  262. Africa/Freetown  
  263. Africa/Lome  
  264. Africa/Monrovia  
  265. Africa/Nouakchott  
  266. Africa/Ouagadougou  
  267. Africa/Sao_Tome  
  268. Africa/Timbuktu  
  269. America/Danmarkshavn  
  270. Atlantic/Canary  
  271. Atlantic/Faeroe  
  272. Atlantic/Faroe  
  273. Atlantic/Madeira  
  274. Atlantic/Reykjavik  
  275. Atlantic/St_Helena  
  276. Eire  
  277. Etc/GMT  
  278. Etc/GMT+0  
  279. Etc/GMT-0  
  280. Etc/GMT0  
  281. Etc/Greenwich  
  282. Etc/UCT  
  283. Etc/UTC  
  284. Etc/Universal  
  285. Etc/Zulu  
  286. Europe/Belfast  
  287. Europe/Dublin  
  288. Europe/Guernsey  
  289. Europe/Isle_of_Man  
  290. Europe/Jersey  
  291. Europe/Lisbon  
  292. Europe/London  
  293. GB  
  294. GB-Eire  
  295. GMT  
  296. GMT0  
  297. Greenwich  
  298. Iceland  
  299. Portugal  
  300. UCT  
  301. UTC  
  302. Universal  
  303. WET  
  304. Zulu  
  305. Africa/Algiers  
  306. Africa/Bangui  
  307. Africa/Brazzaville  
  308. Africa/Ceuta  
  309. Africa/Douala  
  310. Africa/Kinshasa  
  311. Africa/Lagos  
  312. Africa/Libreville  
  313. Africa/Luanda  
  314. Africa/Malabo  
  315. Africa/Ndjamena  
  316. Africa/Niamey  
  317. Africa/Porto-Novo  
  318. Africa/Tunis  
  319. Africa/Windhoek  
  320. Arctic/Longyearbyen  
  321. Atlantic/Jan_Mayen  
  322. CET  
  323. ECT  
  324. Etc/GMT-1  
  325. Europe/Amsterdam  
  326. Europe/Andorra  
  327. Europe/Belgrade  
  328. Europe/Berlin  
  329. Europe/Bratislava  
  330. Europe/Brussels  
  331. Europe/Budapest  
  332. Europe/Copenhagen  
  333. Europe/Gibraltar  
  334. Europe/Ljubljana  
  335. Europe/Luxembourg  
  336. Europe/Madrid  
  337. Europe/Malta  
  338. Europe/Monaco  
  339. Europe/Oslo  
  340. Europe/Paris  
  341. Europe/Podgorica  
  342. Europe/Prague  
  343. Europe/Rome  
  344. Europe/San_Marino  
  345. Europe/Sarajevo  
  346. Europe/Skopje  
  347. Europe/Stockholm  
  348. Europe/Tirane  
  349. Europe/Vaduz  
  350. Europe/Vatican  
  351. Europe/Vienna  
  352. Europe/Warsaw  
  353. Europe/Zagreb  
  354. Europe/Zurich  
  355. MET  
  356. Poland  
  357. ART  
  358. Africa/Blantyre  
  359. Africa/Bujumbura  
  360. Africa/Cairo  
  361. Africa/Gaborone  
  362. Africa/Harare  
  363. Africa/Johannesburg  
  364. Africa/Kigali  
  365. Africa/Lubumbashi  
  366. Africa/Lusaka  
  367. Africa/Maputo  
  368. Africa/Maseru  
  369. Africa/Mbabane  
  370. Africa/Tripoli  
  371. Asia/Amman  
  372. Asia/Beirut  
  373. Asia/Damascus  
  374. Asia/Gaza  
  375. Asia/Istanbul  
  376. Asia/Jerusalem  
  377. Asia/Nicosia  
  378. Asia/Tel_Aviv  
  379. CAT  
  380. EET  
  381. Egypt  
  382. Etc/GMT-2  
  383. Europe/Athens  
  384. Europe/Bucharest  
  385. Europe/Chisinau  
  386. Europe/Helsinki  
  387. Europe/Istanbul  
  388. Europe/Kaliningrad  
  389. Europe/Kiev  
  390. Europe/Mariehamn  
  391. Europe/Minsk  
  392. Europe/Nicosia  
  393. Europe/Riga  
  394. Europe/Simferopol  
  395. Europe/Sofia  
  396. Europe/Tallinn  
  397. Europe/Tiraspol  
  398. Europe/Uzhgorod  
  399. Europe/Vilnius  
  400. Europe/Zaporozhye  
  401. Israel  
  402. Libya  
  403. Turkey  
  404. Africa/Addis_Ababa  
  405. Africa/Asmara  
  406. Africa/Asmera  
  407. Africa/Dar_es_Salaam  
  408. Africa/Djibouti  
  409. Africa/Kampala  
  410. Africa/Khartoum  
  411. Africa/Mogadishu  
  412. Africa/Nairobi  
  413. Antarctica/Syowa  
  414. Asia/Aden  
  415. Asia/Baghdad  
  416. Asia/Bahrain  
  417. Asia/Kuwait  
  418. Asia/Qatar  
  419. Asia/Riyadh  
  420. EAT  
  421. Etc/GMT-3  
  422. Europe/Moscow  
  423. Europe/Volgograd  
  424. Indian/Antananarivo  
  425. Indian/Comoro  
  426. Indian/Mayotte  
  427. W-SU  
  428. Asia/Riyadh87  
  429. Asia/Riyadh88  
  430. Asia/Riyadh89  
  431. Mideast/Riyadh87  
  432. Mideast/Riyadh88  
  433. Mideast/Riyadh89  
  434. Asia/Tehran  
  435. Iran  
  436. Asia/Baku  
  437. Asia/Dubai  
  438. Asia/Muscat  
  439. Asia/Tbilisi  
  440. Asia/Yerevan  
  441. Etc/GMT-4  
  442. Europe/Samara  
  443. Indian/Mahe  
  444. Indian/Mauritius  
  445. Indian/Reunion  
  446. NET  
  447. Asia/Kabul  
  448. Asia/Aqtau  
  449. Asia/Aqtobe  
  450. Asia/Ashgabat  
  451. Asia/Ashkhabad  
  452. Asia/Dushanbe  
  453. Asia/Karachi  
  454. Asia/Oral  
  455. Asia/Samarkand  
  456. Asia/Tashkent  
  457. Asia/Yekaterinburg  
  458. Etc/GMT-5  
  459. Indian/Kerguelen  
  460. Indian/Maldives  
  461. PLT  
  462. Asia/Calcutta  
  463. Asia/Colombo  
  464. Asia/Kolkata  
  465. IST  
  466. Asia/Kathmandu  
  467. Asia/Katmandu  
  468. Antarctica/Mawson  
  469. Antarctica/Vostok  
  470. Asia/Almaty  
  471. Asia/Bishkek  
  472. Asia/Dacca  
  473. Asia/Dhaka  
  474. Asia/Novosibirsk  
  475. Asia/Omsk  
  476. Asia/Qyzylorda  
  477. Asia/Thimbu  
  478. Asia/Thimphu  
  479. BST  
  480. Etc/GMT-6  
  481. Indian/Chagos  
  482. Asia/Rangoon  
  483. Indian/Cocos  
  484. Antarctica/Davis  
  485. Asia/Bangkok  
  486. Asia/Ho_Chi_Minh  
  487. Asia/Hovd  
  488. Asia/Jakarta  
  489. Asia/Krasnoyarsk  
  490. Asia/Phnom_Penh  
  491. Asia/Pontianak  
  492. Asia/Saigon  
  493. Asia/Vientiane  
  494. Etc/GMT-7  
  495. Indian/Christmas  
  496. VST  
  497. Antarctica/Casey  
  498. Asia/Brunei  
  499. Asia/Choibalsan  
  500. Asia/Chongqing  
  501. Asia/Chungking  
  502. Asia/Harbin  
  503. Asia/Hong_Kong  
  504. Asia/Irkutsk  
  505. Asia/Kashgar  
  506. Asia/Kuala_Lumpur  
  507. Asia/Kuching  
  508. Asia/Macao  
  509. Asia/Macau  
  510. Asia/Makassar  
  511. Asia/Manila  
  512. Asia/Shanghai  
  513. Asia/Singapore  
  514. Asia/Taipei  
  515. Asia/Ujung_Pandang  
  516. Asia/Ulaanbaatar  
  517. Asia/Ulan_Bator  
  518. Asia/Urumqi  
  519. Australia/Perth  
  520. Australia/West  
  521. CTT  
  522. Etc/GMT-8  
  523. Hongkong  
  524. PRC  
  525. Singapore  
  526. Australia/Eucla  
  527. Asia/Dili  
  528. Asia/Jayapura  
  529. Asia/Pyongyang  
  530. Asia/Seoul  
  531. Asia/Tokyo  
  532. Asia/Yakutsk  
  533. Etc/GMT-9  
  534. JST  
  535. Japan  
  536. Pacific/Palau  
  537. ROK  
  538. ACT  
  539. Australia/Adelaide  
  540. Australia/Broken_Hill  
  541. Australia/Darwin  
  542. Australia/North  
  543. Australia/South  
  544. Australia/Yancowinna  
  545. AET  
  546. Antarctica/DumontDUrville  
  547. Asia/Sakhalin  
  548. Asia/Vladivostok  
  549. Australia/ACT  
  550. Australia/Brisbane  
  551. Australia/Canberra  
  552. Australia/Currie  
  553. Australia/Hobart  
  554. Australia/Lindeman  
  555. Australia/Melbourne  
  556. Australia/NSW  
  557. Australia/Queensland  
  558. Australia/Sydney  
  559. Australia/Tasmania  
  560. Australia/Victoria  
  561. Etc/GMT-10  
  562. Pacific/Guam  
  563. Pacific/Port_Moresby  
  564. Pacific/Saipan  
  565. Pacific/Truk  
  566. Pacific/Yap  
  567. Australia/LHI  
  568. Australia/Lord_Howe  
  569. Asia/Magadan  
  570. Etc/GMT-11  
  571. Pacific/Efate  
  572. Pacific/Guadalcanal  
  573. Pacific/Kosrae  
  574. Pacific/Noumea  
  575. Pacific/Ponape  
  576. SST  
  577. Pacific/Norfolk  
  578. Antarctica/McMurdo  
  579. Antarctica/South_Pole  
  580. Asia/Anadyr  
  581. Asia/Kamchatka  
  582. Etc/GMT-12  
  583. Kwajalein  
  584. NST  
  585. NZ  
  586. Pacific/Auckland  
  587. Pacific/Fiji  
  588. Pacific/Funafuti  
  589. Pacific/Kwajalein  
  590. Pacific/Majuro  
  591. Pacific/Nauru  
  592. Pacific/Tarawa  
  593. Pacific/Wake  
  594. Pacific/Wallis  
  595. NZ-CHAT  
  596. Pacific/Chatham  
  597. Etc/GMT-13  
  598. Pacific/Enderbury  
  599. Pacific/Tongatapu  
  600. Etc/GMT-14  
  601. Pacific/Kiritimati  

 

转载:

http://moon-walker.iteye.com/blog/2396035

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Java国际化设计文档是一个用于指导软件开发人员在Java平台上实现国际化功能的文档。它主要包含以下内容: 1. 目标和背景:介绍为什么需要进行国际化设计,以及国际化设计的目标是什么。可以提到软件产品面向全球市场的需求和用户体验的重要性。 2. 国际化规范:明确国际化设计的规范和标准,确保团队在实现国际化功能时能够遵循一致的开发流程和方法。例如,规定代码中使用字符编码的方式、资源文件的命名规则、日期和时间格式的处理等。 3. 多语言支持:说明如何实现多语言支持。这包括如何提供多语言的资源文件,以及如何在程序中动态加载和切换不同语言的资源。 4. 文本翻译和本地化:描述如何进行文本翻译和本地化工作。这包括如何选择合适的翻译工具,如何管理翻译工作流程,以及如何确保翻译的准确性和一致性。 5. 时区和日期时间处理:介绍如何正确处理不同时区和日期时间格式。这包括如何在程序中获取和显示不同时区的日期时间,以及如何处理夏令时等时区相关的问题。 6. 跨文化设计:讨论如何考虑不同文化背景下的用户需求和习惯,以便提供更好的用户体验。这包括对数值、货币、单位、图形和颜色等方面的处理。 7. 测试和质量保证:指导如何进行国际化功能的测试和质量保证工作。这包括编写测试用例、模拟不同环境和语言设置的测试等。 8. 文档和培训支持:提供相关文档和培训材料,以便开发人员了解和掌握国际化设计的方法和技巧。 通过这个设计文档,软件开发团队可以系统地了解和理解如何在Java平台上实现国际化功能,从而为用户提供更好的多语言和跨文化支持的软件产品。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值