我的要求是根据国家代码(DE、IT、ES、IE、PT、UK)获取的当前日期和时间。是否有任何Java API可用于此?
我也尝试设置指定国家/地区的语言环境,但我得到相同的输出?
有人能告诉我,为什么我在设置地区时也会选择“亚洲/加尔各答”时区吗?
public void timezone() {
final Locale spanishLocale = new Locale("es", "ES");
final Locale ukLocale = new Locale("en", "UK");
final Locale deLocale = new Locale("de", "DE");
final Locale itLocale = new Locale("it", "IT");
final Locale ptLocale = new Locale("pt", "PT");
final Locale ieLocale = new Locale("es", "ES");
final Calendar cal = Calendar.getInstance(spanishLocale);
System.out.println("date and time in spain is " + cal.getTime());
System.out.println(
"date and time in uk is " + Calendar.getInstance(ukLocale).getTime() + " :: " + Calendar.getInstance(ukLocale).getTimeZone());
System.out.println(
"date and time in de is " + Calendar.getInstance(deLocale).getTime() + " :: " + Calendar.getInstance(deLocale).getTimeZone());
System.out.println(
"date and time in it is " + Calendar.getInstance(itLocale).getTime() + " :: " + Calendar.getInstance(itLocale).getTimeZone());
System.out.println(
"date and time in pt is " + Calendar.getInstance(ptLocale).getTime() + " :: " + Calendar.getInstance(ptLocale).getTimeZone());
System.out.println(
"date and time in ie is " + Calendar.getInstance(ieLocale).getTime() + " :: " + Calendar.getInstance(ieLocale).getTimeZone());
}
输出:
西班牙的日期和时间是2018年4月7日星期六20:23:52。
英国的日期和时间是2018年4月7日星期六20:23:52。:太阳。util。日历ZoneInfo[id=“亚洲/加尔各答”,偏移量=19800000,DSTSaves=0,useDaylight=false,transitions=7,lastRule=null]
de中的日期和时间为2018年4月7日星期六20:23:52 IST::sun。util。日历ZoneInfo[id=“亚洲/加尔各答”,偏移量=19800000,DSTSaves=0,useDaylight=false,transitions=7,lastRule=null]
其中的日期和时间是2018年4月7日星期六20:23:52 IST::sun。util。日历ZoneInfo[id=“亚洲/加尔各答”,偏移量=19800000,DSTSaves=0,useDaylight=false,transitions=7,lastRule=null]
pt中的日期和时间为2018年4月7日星期六20:23:52 IST::sun。util。日历ZoneInfo[id=“亚洲/加尔各答”,偏移量=19800000,DSTSAVIES=0,useDaylight=false,transitions=7,lastRule=null]
ie中的日期和时间为2018年4月7日星期六20:23:52 IST::sun。util。日历ZoneInfo[id=“亚洲/加尔各答”,偏移量=19800000,DSTSaves=0,useDaylight=false,transitions=7,lastRule=null]
如果你绝对需要这样做;虽然,这是错误的,因为EST和PST在美国的可能性差不多,但相隔3个小时,那么我要做的是将国家代码映射到首都,然后将城市映射到时区,这样就有了1-1映射(南非除外,南非有2个!)。别忘了夏令时也是一件事。
了解一个国家/地区使用的所有时区的一种方法是从此文件中读取:
https://github.com/eggert/tz/blob/master/zone1970.tab
你会看到有很多国家有超过1个时区。
您还可以使用另一个文件从他们的代码中获取国家名称:
https://github.com/eggert/tz/blob/master/iso3166.tab
ZonedDateTime.now( // Capture the current moment as seen by the wall-clock time used by the people of a certain region (a time zone).
ZoneId.of( "Europe/Paris" ) // Specify time zone by official IANA time zone name. https://en.wikipedia.org/wiki/Tz_database
) // Returns a `ZonedDateTime` object.
.withZoneSameInstant( // Adjust from Paris time to Auckland time, just to show that we can. Same moment, different wall-clock time.
ZoneId.of( "Pacific/Auckland" )
) // Returns a new, second `ZonedDateTime` object without changing (“mutating”) the first. Per immutable objects pattern.
.format( // Generate a String representing the value of our `ZonedDateTime`.
DateTimeFormatter.ofLocalizedDateTime( // Let java.time automatically localize.
FormatStyle.FULL // Specify the length/abbreviation of new String.
) // Returns a `DateTimeFormatter` using the JVM’s current default `Locale`. Override this default in next line.
.withLocale( Locale.ITALIAN ) // Locale is unrelated to time zone. Wall-clock time of Auckland, presented in Italian – perfectly reasonable depending on the needs of your user.
) // Returns a String object holding text that represents the value of our `ZonedDateTime` object.
domenica 2018年4月8日08:48:16 Ora standard della Nuova Zelanda
根据国家代码确定的当前日期和时间
没有可以做。
国家和时区之间没有直接联系。
地理上较大的国家通常跨越多个时区,因此每个地区的挂钟时间都接近太阳时(这意味着“中午”是太阳在头顶的时候)。今天的印度在其广阔的陆地上使用一个时区是不寻常的。
此外,一个国家内经常有使用不同时区的飞地。这通常与加入或拒绝夏令时有关。例如,在美国,亚利桑那州选择退出夏令时的愚蠢。然而,亚利桑那州是纳瓦霍民族的一部分,纳瓦霍民族确实参与夏令时。因此,无论是国家还是州/省都没有决定时区。
此外,需要考虑的不仅仅是当前与UTC的偏移量。时区是过去、现在和未来对某一地区人民使用的偏移量的变化历史。夏令时(DST)中的切换是分区中偏移量变化的常见原因之一。确定早期/晚期需要一个时区来应用这些历史调整。
所以忘掉国家吧。以大陆/地区的格式指定适当的时区名称,例如美洲/蒙特利尔、非洲/卡萨布兰卡或太平洋/奥克兰。切勿使用3-4个字母的伪时区,如EST或IST,因为它们不是真正的时区,不是标准化的,甚至不是唯一的(!)。
ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
您可以根据用户当前的地理位置或国家代码进行猜测,或提供一个简短列表供用户选择。请参阅本页上well的答案,其中列出了自1970年以来使用的大约350个时区及其经度/纬度和国家代码。
摘录:
…
TK -0922-17114 Pacific/Fakaofo
TL -0833+12535 Asia/Dili
TM +3757+05823 Asia/Ashgabat
TN +3648+01011 Africa/Tunis
TO -2110-17510 Pacific/Tongatapu
TR +4101+02858 Europe/Istanbul
…
我也尝试设置指定国家/地区的语言环境,但得到了相同的输出?
区域设置与时区无关
要本地化,请指定:
例如,考虑一位来自魁北克省的工程师在印度参加会议。她希望使用Asia/Kolkata
时区查看会议日程,以匹配墙上时钟上看到的一天中的时间。
LocalDate ld = LocalDate.of( 2018 , Month.JANUARY , 23 ) ;
LocalTime lt =LocalTime.of( 14 , 0 ) ;
ZoneId z = ZoneId.of( "Asia/Kolkata" ) ;
ZonedDateTime zdt = ZonedDateTime.of( ld , lt , z ) ; // Conference session start.
2018-01-23T14:00 05:30[Asia/Kolkata]
但我们的工程师更喜欢用母语法语阅读文本和格式,即语言环境。加拿大法语。
Locale locale = Locale.CANADA_FRENCH;
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL ).withLocale( locale );
String output = zdt.format( f );
mardi 2018年1月23日印度标准时间14:00:00
我的要求是根据国家代码(DE、IT、ES、IE、PT、UK)获取的当前日期和时间
您可以使用不同的时区创建一个新的时区DateTime,但其中包含相同的时刻(Instant)。所以你会看到一个不同的挂钟时间,但继续引用同一时刻,时间线上的同一点。
ZoneId zMadrid = ZoneId.of( "Europe/Madrid" ) ;
ZonedDateTime zdtMadrid = zdt.withZoneSameInstant( zMadrid) ; // Same moment, different wall-clock time.
zdtMadrid。toString():2018-01-23T09:30 01:00[欧洲/马德里]
也许可以用日语将西班牙划为区域的时刻本地化。
DateTimeFormatter fJapan = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL ).withLocale( Locale.JAPAN );
String outputJapan = zdtMadrid.format( fJapan ); // Zone & locale are unrelated, orthogonal issues.
System.out.println(outputJapan);
所以我们得到了以日语/文化呈现的马德里时间。
2018年1月23日火曜日9时30分00秒中央标准时
一般来说,对于大多数业务逻辑、日志记录、存储和交换,都应该使用UTC值。只需从我们的ZonedDateTime中提取一个即时代码即可。即时时间和分区日期时间都表示相同的时刻,时间线上的相同点,但使用不同的挂钟时间查看。
Instant instant = zdt.toInstant() ; // Capture current moment in UTC.
往另一个方向走:
ZonedDateTime zdt = instant.atZone( "Europe/Helsinki" ) ; // Same simultaneous moment, different wall-clock time.
多年前,java取代了麻烦的旧日期时间类。时间类。使用ZonedDateTime代替日历。
ZoneId z = ZoneId.of( "Pacific/Auckland" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;
对于UTC中的片刻,使用
Instant
。Instant
类表示UTC时间线上的一个时刻,分辨率为纳秒(十进制小数的九(9)位)。
Instant instant = Instant.now() ;
java。Java 8及更高版本内置了时间框架。这些类取代了麻烦的旧遗留日期时间类,如java。util。日期、日历,
要了解更多信息,请参阅Oracle教程。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
现在处于维护模式的Joda-Time项目建议迁移到java.time类。
您可以交换java。直接使用数据库创建时间对象。使用符合JDBC 4.2或更高版本的JDBC驱动程序。不需要字符串,也不需要java。sql*
类。Hibernate5
从何处获取java。时间课程?
Java SE 8、Java SE 9、Java SE 10、Java SE 11及更高版本—标准Java API的一部分,带有捆绑实现。
大部分java。时间功能后移植到Java 6
更高版本的Android(26)捆绑了java.time类的实现。
- 对于早期的Android(
问题内容: 我已经进行了所有设置,将当前日期存储到Java中的变量中。我要弄清楚的是如何存储当前日期之后1年的日期。 这是我当前的日期: 因此,例如,如果今天是今天,它将存储2/18/2013。我正在尝试存储日期2/18/2014。我将如何去做呢? 问题答案: 如果您不想拖动外部库,只需使用 请注意,如果日期是,并且您添加了1年,则将获得
本文向大家介绍Javascript获取当前日期的农历日期代码,包括了Javascript获取当前日期的农历日期代码的使用技巧和注意事项,需要的朋友参考一下 JavaScript代码 调用 效果: 九月十一就是当天的农历日期
问题内容: 我必须有日期时间的当前年份和月份。 我用这个: 可能还有另一种方法吗? 问题答案: 采用: 我想你想要本月的第一天。
当被选中的国家改变时被调用。 会向回调函数传递两个参数:被选中的国家和相关国家列表。被选中的国家指的是一个CountryObject对象,这个对象表示新的被选中的国家;相关国家列表是CountryObject对象的列表,这个列表中储存了所有与新的被选中国家相关的国家。 使用方法: // 使用onCountryPicked() API来设置回调函数 controller.onCountryPicke
有没有办法在Java中找到电话号码的国家代码?如果我给9710334544,我将收到国家代码91(如果是印度)。 有什么建议吗。
问题内容: 过去几个小时以来,我一直在网上搜索以获取系统时区中的日期时间。 当我使用calendar.getTimezone.getDefaultName时,它总是返回我格林尼治标准时间。(理想情况下,它应该返回我当前的时区,即IST)。我正在尝试将此字符串(“格林尼治标准时间”)“ 2014-02-14T06:04:00:00”转换为我的时区datetime。它总是在格林尼治标准时间同时返回我。