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

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. locale = Locale.ENGLISH;
  7. shortDf = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM, locale);
  8. System.out.println("英国格式:"+shortDf.format(date));
  9. }

执行mian方法,结果为:

Java代码  

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

在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. locale = Locale.ENGLISH;
  9. shortDf = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM, locale);
  10. shortDf.setTimeZone(TimeZone.getTimeZone("Europe/London"));
  11. System.out.println("英国当前日期时间:"+shortDf.format(date));
  12. }

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

Java代码  

  1. 中国当前日期时间:2017-10-12 10:55:55
  2. 英国当前日期时间:Oct 12, 2017 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. }

看起来比较简单,但关键是这个字符串,前面说了 不同的语言国家这个字符的格式不同,后端需要根据不同的格式进行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. long tl = date.getTime();//模拟前端转换为中国的时间戳
  7. TimeZone timeZone2 = TimeZone.getTimeZone("Asia/Bangkok");
  8. format.setTimeZone(timeZone2);
  9. String d2 = format.format(tl);
  10. System.out.println("泰国:"+d2);//存入数据库的时间
  11. }

执行结果为:

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. var serveroffset=-25200000;
  3. var d = new Date();
  4. //获取本地浏览器的时区偏移量
  5. var localOffset = d.getTimezoneOffset() * 60000;
  6. //的到本地和偏移量的差值
  7. var deffoffset=localOffset-(serveroffset);
  8. //获取本地浏览器时间戳
  9. var localTime = d.getTime();
  10. //计算出传到服务器的时间戳
  11. 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. TimeZone timeZone1 = TimeZone.getDefault();//获取当前服务器时区
  3. TimeZone timeZone2 = TimeZone.getTimeZone("Asia/Shanghai");//获取上海时区
  4. TimeZone timeZone3 = TimeZone.getTimeZone("GMT");//获取格林威治标准时区
  5. TimeZone timeZone4 = TimeZone.getTimeZone("GMT+8");//获取东八区时区
  6. TimeZone timeZone5 = TimeZone.getTimeZone("UTC");//获取UTC标准时间
  7. TimeZone timeZone6 = TimeZone.getTimeZone("CST");//获取CST时区
  8. System.out.println(timeZone1.getRawOffset());
  9. System.out.println(timeZone2.getRawOffset());
  10. System.out.println(timeZone3.getRawOffset());
  11. System.out.println(timeZone4.getRawOffset());
  12. System.out.println(timeZone5.getRawOffset());
  13. System.out.println(timeZone6.getRawOffset());
  14. }

运行结果:

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

转载:

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

java国际化之时区问题处理相关推荐

  1. java国际化程序_Java 国际化标准程序实现

    国际化程序实现 所谓的国家化应用指的就是根据当前的语言环境读取指定的语言资源文件. 如果要想实现国际化的操作,那么首先要解决的问题就是如何读取资源文件的问题:所谓的资源文件 就是指文件后缀名称为:&q ...

  2. java国际化——日期和时间+排序

    [0]README 1) 本文部分文字描述转自 core java volume 2 , 测试源代码均为原创, 旨在理解 java国际化--日期和时间+排序 的基础知识 : [1]日期和时间 1)当格 ...

  3. java 国际化_Java国际化基础

    关于本教程 本教程是关于什么的? 本教程向您介绍Java编程语言对多语言和多国家/地区环境的支持. 本课程首先对国际化原则和概念进行一般性讨论,然后继续对Java国际化支持的特定领域进行概述. 最后几 ...

  4. JAVA国际化教程【转载】

    JAVA国际化教程1.关于本教程 2.简介 3.Java平台I18N支持概述 4.Unicode与Java字符 5.提供本地化的资源 6.使用日期.数字和货币 7.将各部分放到一起 8.结束语与参考资 ...

  5. Java国际化教程_编程入门自学教程_菜鸟教程-免费教程分享

    教程简介 Java国际化入门教程 - 从简单的步骤了解Java国际化从基本到高级概念,包括概述,环境设置,区域设置,区域设置详细信息,显示语言,ResourceBundle,NumberFormat, ...

  6. java国际化——资源包

    [0]README 1) 本文部分文字描述转自 core java volume 2 , 旨在理解 java国际化--资源包 的基础知识 : 2) 本文源代码idea 转自: (利用propertie ...

  7. java国际化——消息格式化+文本文件和字符集

    [0]README 1) 本文部分文字描述转自 core java volume 2 , 测试源代码均为原创, 旨在理解 java国际化--消息格式化+文本文件和字符集 的基础知识 : 2) 由于本文 ...

  8. java国际化——Locale+数字格式

    [0]README 1) 本文部分文字描述转自 core java volume 2 , 测试源代码均为原创, 旨在理解 java国际化--Locale+数字格式 的基础知识 : 2) java 编程 ...

  9. 时区 java 巴黎,关于时区:Java没有有关所有IANA时区的信息

    我正在尝试将来自前端的值映射到ZoneId类,如下所示: Optional.ofNullable(timeZone).map(ZoneId::of).orElse(null) 在大多数时区,它工作正常 ...

最新文章

  1. php 查询datetime,急急PHP,数据库中createtime字段类型为datetime,怎样根据这个查询一段时间内的数据...
  2. 如何在C++中动态建立二维数组
  3. zookeeper环境搭建以及测试
  4. static_cast, dynamic_cast, const_cast探讨【转】
  5. [转]redis 5.0.5 5分钟搭建redis集群
  6. 计算机应用基础第七章自测题,计算机应用基础 第七章.doc
  7. eclipse技巧总结
  8. H3C 常用信息查看命令
  9. 测开之路十六:@classmethod与@staticmethod
  10. WITH (NOLOCK)提高查询效率
  11. Google翻译api接入及Java、Python实现
  12. hadoop组件---数据仓库---hive简介
  13. 网络计算机没有权限,电脑提示无网络访问权限的解决方法
  14. 逻辑运算符 异或是什么意思 异或运算
  15. 解决springboot警告WARNING: All illegal access operations will be denied in a future release
  16. 触漫机器人_触漫携手壹心理打破亲子僵局 让爱驻家守护亲子健康
  17. RT-Thread 传感器软件包归类
  18. Lambda表达式和Stream类的使用
  19. Vert.x开发指南
  20. python使用代理爬虫_python使用代理爬虫导致无法访问网页

热门文章

  1. DHCP和域的概念知识
  2. 计算机无法删除ie,ie无法删除怎么办
  3. 在家干什么副业好?工作之余做什么副业比较好
  4. 直播加热是什么意思?抖音直播加热方法有哪些?
  5. Ubuntu 20.04 物理机安装
  6. selenium2java 截图保存桌面(内含一坑)
  7. C语言模拟回合制游戏 源码
  8. 【懒懒的Python学习笔记一】
  9. 运动想象EEG背景知识
  10. OpenCV里的常用Rect用法