在国际化的项目中需要处理的日期时间问题主要有两点:
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、 UTC、CST等时区,也可以是城市名:
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是在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文件中的内容。
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
转载请注明出处:
相关推荐
Java国际化(Internationalization)与时间处理是开发过程中两个重要的领域,尤其对于构建全球化应用程序来说,理解和掌握这些概念至关重要。国际化允许软件适应不同地区的语言、文化习惯和格式,而时间处理则涉及...
开发者也可以使用`java.time`包下的`ZoneId`和`ZonedDateTime`类,这是Java 8引入的新API,它们提供了更现代、更易用的时区处理方式。 压缩包文件`Time_Zones_XP`可能包含了与Windows XP时区相关的数据,尽管它对...
Java对世界不同时区timezone之间时间转换的处理方法 Java对世界不同时区timezone之间时间转换的处理方法是指在不同的时区之间进行时间转换的操作。下面将对Java中关于时区的概念、时区之间的时间转换方法、Java中...
Java数据格式化是Java编程语言中处理数据呈现和解析的核心技术之一,主要涉及对文本、日期、数值等数据类型的格式化处理,以适应不同的显示需求和国际化标准。本文将深入探讨Java数据格式化的关键概念、类和方法,...
在Java编程中,`new Date()` 用于创建一个表示当前日期和时间的对象。然而,有时候开发者可能会遇到这样一个问题:使用 ...理解并正确处理时区差异是Java开发中的一项重要技能,尤其是在进行国际化和全球化应用开发时。
本文将深入探讨“Android国际化”的概念、重要性以及实现方式,结合给出的资源【eoeAndroid特刊】第五期+Android应用国际化.pdf,我们将详细解析Android应用如何进行国际化处理。 首先,理解“国际化”...
5. **时区处理**:Joda-Time支持世界各地的时区,提供`DateTimeZone`类来处理时区转换,避免了`java.util.TimeZone`的一些局限。 6. **日期运算**:Joda-Time提供了丰富的日期运算方法,如加上或减去天数、月份、...
例如,在Python中,可以使用pytz库来处理时区转换,而在Java中,可以使用ZoneId类来获取和操作时区。 其次,用户界面设计是多时区时钟的重要组成部分。为了使用户能方便地查看和切换不同的时区,设计上可能包含以下...
Java国际化指南 Java Platform, Standard Edition Internationalization Guide, Release 17是Oracle公司发布的一份关于Java国际化的官方指南。这份指南旨在帮助开发者更好地理解Java国际化的概念和技术,从而开发...
`Calendar`类还支持国际化,因为日期和时间的表示方式因地区而异。通过`Locale`对象,我们可以获取符合特定文化习惯的日期和时间格式。 在实际项目中,理解和掌握`Calendar`类的源码可以帮助我们更好地处理日期和...
在Spring框架中,国际化(Internationalization,简称i18n)是为支持多语言环境而设计的功能,使得应用程序能够根据用户所在的地域和语言提供相应的显示内容。本示例将详细介绍如何在Spring应用中实现国际化。 首先...
3. **时区处理**:在世界时钟应用中,我们需要根据不同的时区显示时间。这需要用到`java.time.ZoneId`类,它包含了全球所有时区的信息。我们可以使用`ZoneId.of("timezone_id")`来获取指定时区的ID,并将其与`...
8. **日期和时间API**:Java 8引入了全新的`java.time`包,取代了过时的`java.util.Date`和`java.util.Calendar`,提供更加友好和强大的日期、时间、时区处理能力。 9. **XML处理**:`javax.xml`包提供了解析和生成...
在Java编程语言中,实现多国时间显示的功能主要涉及到日期和时间处理,国际化(i18n)以及线程管理等多个知识点。以下是对这些概念的详细解释: 1. **日期和时间处理**:Java提供了多种类来处理日期和时间,如`java...
10. **国际化和本地化**:如果希望时钟程序支持多语言,可以使用Java的`ResourceBundle`和`Locale`类实现国际化。根据用户的语言偏好,显示相应的界面文本。 通过以上这些技术,我们可以构建出一个功能完善的时钟...
在Java编程语言中,日期和时区处理是常见的任务,特别是在开发需要跨地域协作或处理时间敏感数据的应用程序时。本项目"java代码-日期时区测试"旨在探讨如何使用Java来管理和转换不同时区的日期和时间。下面将详细...
通过`TimeZone.getTimeZone()`方法获取时间区对象,这对于处理跨时区的数据非常有用,特别是在进行国际化的应用开发中,确保日期时间的正确显示和计算。 #### b. 日期格式化 `DEFAULT_DATE_FORMAT_STRING`定义了一...
这个类在早期版本的Java中被广泛使用,但它并不完美,因为它的API设计并不线程安全,且不支持国际化。为了解决这些问题,Java 8引入了新的日期时间API,位于java.time包下,包括LocalDate、LocalTime、LocalDateTime...
- `java.time`包提供了更强大且易于使用的日期、时间和时区处理,如`LocalDate`, `LocalTime`, `LocalDateTime` 和 `ZonedDateTime`。 10. **反射**: - 允许运行时动态获取类信息和调用方法,如`Class.forName()...
理解这些格式化规则有助于我们在国际化和本地化场景下进行数据处理。 4. **数组(Array)**:Java提供了丰富的数组操作方法,包括`clone()`, `length`属性,以及`System.arraycopy()`等。此外,`Arrays`类提供了一...