`

java国际化之时区问题处理

阅读更多

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

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

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

 

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

 

对应的关键词:Locale

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

public static void main(String[] args) {
        Date date = new Date();
        Locale locale = Locale.CHINA;
        DateFormat shortDf = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM, locale);
        System.out.println("中国格式:"+shortDf.format(date));
 
        locale = Locale.ENGLISH;
        shortDf = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM, locale);
        System.out.println("英国格式:"+shortDf.format(date));
}
 

 执行mian方法,结果为:

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

 

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

 

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

 

对应的关键词:TimeZone

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

public static void main(String[] args) {
        Date date = new Date();
        Locale locale = Locale.CHINA;
        DateFormat shortDf = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM, locale);
        shortDf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));//Asia/Chongqing
        System.out.println(TimeZone.getDefault().getID());
        System.out.println("中国当前日期时间:" + shortDf.format(date));
 
        locale = Locale.ENGLISH;
        shortDf = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM, locale);
        shortDf.setTimeZone(TimeZone.getTimeZone("Europe/London"));
        System.out.println("英国当前日期时间:"+shortDf.format(date));
    }
 

 

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

中国当前日期时间:2017-10-12 10:55:55
英国当前日期时间:Oct 12, 2017 3:55:55 AM

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

 

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

 

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

 

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

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

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

 

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

 

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

 

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

 

 

执行结果为:

中国:2017-10-12 08:00:00
泰国:2017-10-12 07:00:00

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

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

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

 

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

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

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

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

 

Java中的TimeZone

 

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

 

public static void main(String[] args) throws Exception{
 
        TimeZone timeZone1 = TimeZone.getDefault();//获取当前服务器时区
        TimeZone timeZone2 = TimeZone.getTimeZone("Asia/Shanghai");//获取上海时区
        TimeZone timeZone3 = TimeZone.getTimeZone("GMT");//获取格林威治标准时区
        TimeZone timeZone4 = TimeZone.getTimeZone("GMT+8");//获取东八区时区
        TimeZone timeZone5 = TimeZone.getTimeZone("UTC");//获取UTC标准时间
        TimeZone timeZone6 = TimeZone.getTimeZone("CST");//获取CST时区
 
        System.out.println(timeZone1.getRawOffset());
        System.out.println(timeZone2.getRawOffset());
        System.out.println(timeZone3.getRawOffset());
        System.out.println(timeZone4.getRawOffset());
        System.out.println(timeZone5.getRawOffset());
        System.out.println(timeZone6.getRawOffset());
    }
 

 运行结果:

28800000
28800000
0
28800000
0
-21600000

 

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

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

 

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

 

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

 
Etc/GMT+12
Etc/GMT+11
MIT
Pacific/Apia
Pacific/Midway
Pacific/Niue
Pacific/Pago_Pago
Pacific/Samoa
US/Samoa
America/Adak
America/Atka
Etc/GMT+10
HST
Pacific/Fakaofo
Pacific/Honolulu
Pacific/Johnston
Pacific/Rarotonga
Pacific/Tahiti
SystemV/HST10
US/Aleutian
US/Hawaii
Pacific/Marquesas
AST
America/Anchorage
America/Juneau
America/Nome
America/Yakutat
Etc/GMT+9
Pacific/Gambier
SystemV/YST9
SystemV/YST9YDT
US/Alaska
America/Dawson
America/Ensenada
America/Los_Angeles
America/Tijuana
America/Vancouver
America/Whitehorse
Canada/Pacific
Canada/Yukon
Etc/GMT+8
Mexico/BajaNorte
PST
PST8PDT
Pacific/Pitcairn
SystemV/PST8
SystemV/PST8PDT
US/Pacific
US/Pacific-New
America/Boise
America/Cambridge_Bay
America/Chihuahua
America/Dawson_Creek
America/Denver
America/Edmonton
America/Hermosillo
America/Inuvik
America/Mazatlan
America/Phoenix
America/Shiprock
America/Yellowknife
Canada/Mountain
Etc/GMT+7
MST
MST7MDT
Mexico/BajaSur
Navajo
PNT
SystemV/MST7
SystemV/MST7MDT
US/Arizona
US/Mountain
America/Belize
America/Cancun
America/Chicago
America/Costa_Rica
America/El_Salvador
America/Guatemala
America/Indiana/Knox
America/Indiana/Tell_City
America/Knox_IN
America/Managua
America/Menominee
America/Merida
America/Mexico_City
America/Monterrey
America/North_Dakota/Center
America/North_Dakota/New_Salem
America/Rainy_River
America/Rankin_Inlet
America/Regina
America/Swift_Current
America/Tegucigalpa
America/Winnipeg
CST
CST6CDT
Canada/Central
Canada/East-Saskatchewan
Canada/Saskatchewan
Chile/EasterIsland
Etc/GMT+6
Mexico/General
Pacific/Easter
Pacific/Galapagos
SystemV/CST6
SystemV/CST6CDT
US/Central
US/Indiana-Starke
America/Atikokan
America/Bogota
America/Cayman
America/Coral_Harbour
America/Detroit
America/Fort_Wayne
America/Grand_Turk
America/Guayaquil
America/Havana
America/Indiana/Indianapolis
America/Indiana/Marengo
America/Indiana/Petersburg
America/Indiana/Vevay
America/Indiana/Vincennes
America/Indiana/Winamac
America/Indianapolis
America/Iqaluit
America/Jamaica
America/Kentucky/Louisville
America/Kentucky/Monticello
America/Lima
America/Louisville
America/Montreal
America/Nassau
America/New_York
America/Nipigon
America/Panama
America/Pangnirtung
America/Port-au-Prince
America/Resolute
America/Thunder_Bay
America/Toronto
Canada/Eastern
Cuba
EST
EST5EDT
Etc/GMT+5
IET
Jamaica
SystemV/EST5
SystemV/EST5EDT
US/East-Indiana
US/Eastern
US/Michigan
America/Caracas
America/Anguilla
America/Antigua
America/Aruba
America/Asuncion
America/Barbados
America/Blanc-Sablon
America/Boa_Vista
America/Campo_Grande
America/Cuiaba
America/Curacao
America/Dominica
America/Eirunepe
America/Glace_Bay
America/Goose_Bay
America/Grenada
America/Guadeloupe
America/Guyana
America/Halifax
America/La_Paz
America/Manaus
America/Marigot
America/Martinique
America/Moncton
America/Montserrat
America/Port_of_Spain
America/Porto_Acre
America/Porto_Velho
America/Puerto_Rico
America/Rio_Branco
America/Santiago
America/Santo_Domingo
America/St_Barthelemy
America/St_Kitts
America/St_Lucia
America/St_Thomas
America/St_Vincent
America/Thule
America/Tortola
America/Virgin
Antarctica/Palmer
Atlantic/Bermuda
Atlantic/Stanley
Brazil/Acre
Brazil/West
Canada/Atlantic
Chile/Continental
Etc/GMT+4
PRT
SystemV/AST4
SystemV/AST4ADT
America/St_Johns
CNT
Canada/Newfoundland
AGT
America/Araguaina
America/Argentina/Buenos_Aires
America/Argentina/Catamarca
America/Argentina/ComodRivadavia
America/Argentina/Cordoba
America/Argentina/Jujuy
America/Argentina/La_Rioja
America/Argentina/Mendoza
America/Argentina/Rio_Gallegos
America/Argentina/Salta
America/Argentina/San_Juan
America/Argentina/San_Luis
America/Argentina/Tucuman
America/Argentina/Ushuaia
America/Bahia
America/Belem
America/Buenos_Aires
America/Catamarca
America/Cayenne
America/Cordoba
America/Fortaleza
America/Godthab
America/Jujuy
America/Maceio
America/Mendoza
America/Miquelon
America/Montevideo
America/Paramaribo
America/Recife
America/Rosario
America/Santarem
America/Sao_Paulo
Antarctica/Rothera
BET
Brazil/East
Etc/GMT+3
America/Noronha
Atlantic/South_Georgia
Brazil/DeNoronha
Etc/GMT+2
America/Scoresbysund
Atlantic/Azores
Atlantic/Cape_Verde
Etc/GMT+1
Africa/Abidjan
Africa/Accra
Africa/Bamako
Africa/Banjul
Africa/Bissau
Africa/Casablanca
Africa/Conakry
Africa/Dakar
Africa/El_Aaiun
Africa/Freetown
Africa/Lome
Africa/Monrovia
Africa/Nouakchott
Africa/Ouagadougou
Africa/Sao_Tome
Africa/Timbuktu
America/Danmarkshavn
Atlantic/Canary
Atlantic/Faeroe
Atlantic/Faroe
Atlantic/Madeira
Atlantic/Reykjavik
Atlantic/St_Helena
Eire
Etc/GMT
Etc/GMT+0
Etc/GMT-0
Etc/GMT0
Etc/Greenwich
Etc/UCT
Etc/UTC
Etc/Universal
Etc/Zulu
Europe/Belfast
Europe/Dublin
Europe/Guernsey
Europe/Isle_of_Man
Europe/Jersey
Europe/Lisbon
Europe/London
GB
GB-Eire
GMT
GMT0
Greenwich
Iceland
Portugal
UCT
UTC
Universal
WET
Zulu
Africa/Algiers
Africa/Bangui
Africa/Brazzaville
Africa/Ceuta
Africa/Douala
Africa/Kinshasa
Africa/Lagos
Africa/Libreville
Africa/Luanda
Africa/Malabo
Africa/Ndjamena
Africa/Niamey
Africa/Porto-Novo
Africa/Tunis
Africa/Windhoek
Arctic/Longyearbyen
Atlantic/Jan_Mayen
CET
ECT
Etc/GMT-1
Europe/Amsterdam
Europe/Andorra
Europe/Belgrade
Europe/Berlin
Europe/Bratislava
Europe/Brussels
Europe/Budapest
Europe/Copenhagen
Europe/Gibraltar
Europe/Ljubljana
Europe/Luxembourg
Europe/Madrid
Europe/Malta
Europe/Monaco
Europe/Oslo
Europe/Paris
Europe/Podgorica
Europe/Prague
Europe/Rome
Europe/San_Marino
Europe/Sarajevo
Europe/Skopje
Europe/Stockholm
Europe/Tirane
Europe/Vaduz
Europe/Vatican
Europe/Vienna
Europe/Warsaw
Europe/Zagreb
Europe/Zurich
MET
Poland
ART
Africa/Blantyre
Africa/Bujumbura
Africa/Cairo
Africa/Gaborone
Africa/Harare
Africa/Johannesburg
Africa/Kigali
Africa/Lubumbashi
Africa/Lusaka
Africa/Maputo
Africa/Maseru
Africa/Mbabane
Africa/Tripoli
Asia/Amman
Asia/Beirut
Asia/Damascus
Asia/Gaza
Asia/Istanbul
Asia/Jerusalem
Asia/Nicosia
Asia/Tel_Aviv
CAT
EET
Egypt
Etc/GMT-2
Europe/Athens
Europe/Bucharest
Europe/Chisinau
Europe/Helsinki
Europe/Istanbul
Europe/Kaliningrad
Europe/Kiev
Europe/Mariehamn
Europe/Minsk
Europe/Nicosia
Europe/Riga
Europe/Simferopol
Europe/Sofia
Europe/Tallinn
Europe/Tiraspol
Europe/Uzhgorod
Europe/Vilnius
Europe/Zaporozhye
Israel
Libya
Turkey
Africa/Addis_Ababa
Africa/Asmara
Africa/Asmera
Africa/Dar_es_Salaam
Africa/Djibouti
Africa/Kampala
Africa/Khartoum
Africa/Mogadishu
Africa/Nairobi
Antarctica/Syowa
Asia/Aden
Asia/Baghdad
Asia/Bahrain
Asia/Kuwait
Asia/Qatar
Asia/Riyadh
EAT
Etc/GMT-3
Europe/Moscow
Europe/Volgograd
Indian/Antananarivo
Indian/Comoro
Indian/Mayotte
W-SU
Asia/Riyadh87
Asia/Riyadh88
Asia/Riyadh89
Mideast/Riyadh87
Mideast/Riyadh88
Mideast/Riyadh89
Asia/Tehran
Iran
Asia/Baku
Asia/Dubai
Asia/Muscat
Asia/Tbilisi
Asia/Yerevan
Etc/GMT-4
Europe/Samara
Indian/Mahe
Indian/Mauritius
Indian/Reunion
NET
Asia/Kabul
Asia/Aqtau
Asia/Aqtobe
Asia/Ashgabat
Asia/Ashkhabad
Asia/Dushanbe
Asia/Karachi
Asia/Oral
Asia/Samarkand
Asia/Tashkent
Asia/Yekaterinburg
Etc/GMT-5
Indian/Kerguelen
Indian/Maldives
PLT
Asia/Calcutta
Asia/Colombo
Asia/Kolkata
IST
Asia/Kathmandu
Asia/Katmandu
Antarctica/Mawson
Antarctica/Vostok
Asia/Almaty
Asia/Bishkek
Asia/Dacca
Asia/Dhaka
Asia/Novosibirsk
Asia/Omsk
Asia/Qyzylorda
Asia/Thimbu
Asia/Thimphu
BST
Etc/GMT-6
Indian/Chagos
Asia/Rangoon
Indian/Cocos
Antarctica/Davis
Asia/Bangkok
Asia/Ho_Chi_Minh
Asia/Hovd
Asia/Jakarta
Asia/Krasnoyarsk
Asia/Phnom_Penh
Asia/Pontianak
Asia/Saigon
Asia/Vientiane
Etc/GMT-7
Indian/Christmas
VST
Antarctica/Casey
Asia/Brunei
Asia/Choibalsan
Asia/Chongqing
Asia/Chungking
Asia/Harbin
Asia/Hong_Kong
Asia/Irkutsk
Asia/Kashgar
Asia/Kuala_Lumpur
Asia/Kuching
Asia/Macao
Asia/Macau
Asia/Makassar
Asia/Manila
Asia/Shanghai
Asia/Singapore
Asia/Taipei
Asia/Ujung_Pandang
Asia/Ulaanbaatar
Asia/Ulan_Bator
Asia/Urumqi
Australia/Perth
Australia/West
CTT
Etc/GMT-8
Hongkong
PRC
Singapore
Australia/Eucla
Asia/Dili
Asia/Jayapura
Asia/Pyongyang
Asia/Seoul
Asia/Tokyo
Asia/Yakutsk
Etc/GMT-9
JST
Japan
Pacific/Palau
ROK
ACT
Australia/Adelaide
Australia/Broken_Hill
Australia/Darwin
Australia/North
Australia/South
Australia/Yancowinna
AET
Antarctica/DumontDUrville
Asia/Sakhalin
Asia/Vladivostok
Australia/ACT
Australia/Brisbane
Australia/Canberra
Australia/Currie
Australia/Hobart
Australia/Lindeman
Australia/Melbourne
Australia/NSW
Australia/Queensland
Australia/Sydney
Australia/Tasmania
Australia/Victoria
Etc/GMT-10
Pacific/Guam
Pacific/Port_Moresby
Pacific/Saipan
Pacific/Truk
Pacific/Yap
Australia/LHI
Australia/Lord_Howe
Asia/Magadan
Etc/GMT-11
Pacific/Efate
Pacific/Guadalcanal
Pacific/Kosrae
Pacific/Noumea
Pacific/Ponape
SST
Pacific/Norfolk
Antarctica/McMurdo
Antarctica/South_Pole
Asia/Anadyr
Asia/Kamchatka
Etc/GMT-12
Kwajalein
NST
NZ
Pacific/Auckland
Pacific/Fiji
Pacific/Funafuti
Pacific/Kwajalein
Pacific/Majuro
Pacific/Nauru
Pacific/Tarawa
Pacific/Wake
Pacific/Wallis
NZ-CHAT
Pacific/Chatham
Etc/GMT-13
Pacific/Enderbury
Pacific/Tongatapu
Etc/GMT-14
Pacific/Kiritimati

 

转载请注明出处:

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

0
0
分享到:
评论

相关推荐

    java国际化&时间处理

    Java国际化(Internationalization)与时间处理是开发过程中两个重要的领域,尤其对于构建全球化应用程序来说,理解和掌握这些概念至关重要。国际化允许软件适应不同地区的语言、文化习惯和格式,而时间处理则涉及...

    java的时区问题

    开发者也可以使用`java.time`包下的`ZoneId`和`ZonedDateTime`类,这是Java 8引入的新API,它们提供了更现代、更易用的时区处理方式。 压缩包文件`Time_Zones_XP`可能包含了与Windows XP时区相关的数据,尽管它对...

    Java对世界不同时区timezone之间时间转换的处理方法

    Java对世界不同时区timezone之间时间转换的处理方法 Java对世界不同时区timezone之间时间转换的处理方法是指在不同的时区之间进行时间转换的操作。下面将对Java中关于时区的概念、时区之间的时间转换方法、Java中...

    java数据格式化

    Java数据格式化是Java编程语言中处理数据呈现和解析的核心技术之一,主要涉及对文本、日期、数值等数据类型的格式化处理,以适应不同的显示需求和国际化标准。本文将深入探讨Java数据格式化的关键概念、类和方法,...

    java中 new date() 打印出的时间与系统时间错了八小时的解决方法

    在Java编程中,`new Date()` 用于创建一个表示当前日期和时间的对象。然而,有时候开发者可能会遇到这样一个问题:使用 ...理解并正确处理时区差异是Java开发中的一项重要技能,尤其是在进行国际化和全球化应用开发时。

    android国际化

    本文将深入探讨“Android国际化”的概念、重要性以及实现方式,结合给出的资源【eoeAndroid特刊】第五期+Android应用国际化.pdf,我们将详细解析Android应用如何进行国际化处理。 首先,理解“国际化”...

    操作日期的java包

    5. **时区处理**:Joda-Time支持世界各地的时区,提供`DateTimeZone`类来处理时区转换,避免了`java.util.TimeZone`的一些局限。 6. **日期运算**:Joda-Time提供了丰富的日期运算方法,如加上或减去天数、月份、...

    多时区时钟的设计实现

    例如,在Python中,可以使用pytz库来处理时区转换,而在Java中,可以使用ZoneId类来获取和操作时区。 其次,用户界面设计是多时区时钟的重要组成部分。为了使用户能方便地查看和切换不同的时区,设计上可能包含以下...

    JDK17-internationalization-guide.pdf

    Java国际化指南 Java Platform, Standard Edition Internationalization Guide, Release 17是Oracle公司发布的一份关于Java国际化的官方指南。这份指南旨在帮助开发者更好地理解Java国际化的概念和技术,从而开发...

    JavaCalendar_JAVA源码_

    `Calendar`类还支持国际化,因为日期和时间的表示方式因地区而异。通过`Locale`对象,我们可以获取符合特定文化习惯的日期和时间格式。 在实际项目中,理解和掌握`Calendar`类的源码可以帮助我们更好地处理日期和...

    spring显示国际化信息

    在Spring框架中,国际化(Internationalization,简称i18n)是为支持多语言环境而设计的功能,使得应用程序能够根据用户所在的地域和语言提供相应的显示内容。本示例将详细介绍如何在Spring应用中实现国际化。 首先...

    java编写的时间钟

    3. **时区处理**:在世界时钟应用中,我们需要根据不同的时区显示时间。这需要用到`java.time.ZoneId`类,它包含了全球所有时区的信息。我们可以使用`ZoneId.of("timezone_id")`来获取指定时区的ID,并将其与`...

    java 1.8 API 中文版

    8. **日期和时间API**:Java 8引入了全新的`java.time`包,取代了过时的`java.util.Date`和`java.util.Calendar`,提供更加友好和强大的日期、时间、时区处理能力。 9. **XML处理**:`javax.xml`包提供了解析和生成...

    多国时间显示 java

    在Java编程语言中,实现多国时间显示的功能主要涉及到日期和时间处理,国际化(i18n)以及线程管理等多个知识点。以下是对这些概念的详细解释: 1. **日期和时间处理**:Java提供了多种类来处理日期和时间,如`java...

    java实现时钟

    10. **国际化和本地化**:如果希望时钟程序支持多语言,可以使用Java的`ResourceBundle`和`Locale`类实现国际化。根据用户的语言偏好,显示相应的界面文本。 通过以上这些技术,我们可以构建出一个功能完善的时钟...

    java代码-日期时区测试

    在Java编程语言中,日期和时区处理是常见的任务,特别是在开发需要跨地域协作或处理时间敏感数据的应用程序时。本项目"java代码-日期时区测试"旨在探讨如何使用Java来管理和转换不同时区的日期和时间。下面将详细...

    Util.java 一些公共的Java方法

    通过`TimeZone.getTimeZone()`方法获取时间区对象,这对于处理跨时区的数据非常有用,特别是在进行国际化的应用开发中,确保日期时间的正确显示和计算。 #### b. 日期格式化 `DEFAULT_DATE_FORMAT_STRING`定义了一...

    Java实现时间与日期程序(附源代码)

    这个类在早期版本的Java中被广泛使用,但它并不完美,因为它的API设计并不线程安全,且不支持国际化。为了解决这些问题,Java 8引入了新的日期时间API,位于java.time包下,包括LocalDate、LocalTime、LocalDateTime...

    java api 操作手册

    - `java.time`包提供了更强大且易于使用的日期、时间和时区处理,如`LocalDate`, `LocalTime`, `LocalDateTime` 和 `ZonedDateTime`。 10. **反射**: - 允许运行时动态获取类信息和调用方法,如`Class.forName()...

    java源码整理包

    理解这些格式化规则有助于我们在国际化和本地化场景下进行数据处理。 4. **数组(Array)**:Java提供了丰富的数组操作方法,包括`clone()`, `length`属性,以及`System.arraycopy()`等。此外,`Arrays`类提供了一...

Global site tag (gtag.js) - Google Analytics