How do I get timezone information on Mac OS X, using Java?
通过Java在Mac上获取时区信息的方式与在任何其他主机操作系统上获取时区信息的方式相同
ZoneId
定义感兴趣的时区。以Continent/Region的格式指定一个proper time zone name,例如America/Montreal、Africa/Casablanca或Pacific/Auckland。切勿使用2-4个字母的缩写,如EST或IST,因为它们不是真正的时区,不是标准化的,甚至不是唯一的(!)
ZoneId z = ZoneId.of( "America/Montreal" ) ;
ZoneRules
获取该区域的规则。这些规则包括过去、现在和未来对该特定地区人民使用的抵消的历史变化
ZoneRules rules = z.getRules() ;
询问任何特定时刻有效的规则。让我们利用当前时刻进行演示
Instant instant = Instant.now() ; // Capture the current moment.
# 1 楼答案
tl;博士
爪哇。时间
现代解决方案使用java。取代糟糕的遗留日期时间类的时间类:
ZoneId
和ZoneOffset
和ZoneRules
你问:
通过Java在Mac上获取时区信息的方式与在任何其他主机操作系统上获取时区信息的方式相同
ZoneId
定义感兴趣的时区。以
Continent/Region
的格式指定一个proper time zone name,例如America/Montreal
、Africa/Casablanca
或Pacific/Auckland
。切勿使用2-4个字母的缩写,如EST
或IST
,因为它们不是真正的时区,不是标准化的,甚至不是唯一的(!)ZoneRules
获取该区域的规则。这些规则包括过去、现在和未来对该特定地区人民使用的抵消的历史变化
询问任何特定时刻有效的规则。让我们利用当前时刻进行演示
ZoneOffset
获取此时在该区域中使用的偏移量。偏移量只是UTC(本初子午线)前后的小时分秒数
夏时制(DST)
询问夏令时(DST)是否在该区域的该时刻生效
您还可以要求在该区域中进行上一次和下一次转换,等等
tzdata
请注意,macOS有自己的tzdata数据副本,用于定义时区。苹果的操作系统更新包括新版本。如果您感兴趣的区域正在更改,请确保您的区域是最新的。此macOS副本影响大多数非基于Java的应用程序
AJava Virtual Machine (JVM)包括它自己的tzdata。同样,如果您感兴趣的时区正在更改,请确保您使用的所有JVM都已更新。Java更新包括freshtzdata。但政客们确实喜欢改变时区,通常很少或根本没有预先警告。因此,您可能需要手动更新JVM的tzdata文件。并确保更新您安装的任何JVM以及与您正在使用的任何基于Java的应用程序捆绑的任何JVM
关于java。时间
java.time框架内置于Java8和更高版本中。这些类取代了legacy日期时间类,如^{} 、^{} 、&^{}
要了解更多信息,请参阅Oracle Tutorial。并搜索堆栈溢出以获得许多示例和解释。规范为JSR 310
现在位于maintenance mode的Joda-Time项目建议迁移到java.time类
您可以交换java。时间对象直接与数据库连接。使用符合JDBC 4.2或更高版本的JDBC driver。不需要字符串,也不需要
java.sql.*
类。冬眠5&;JPA2.2支持java。时间在哪里可以获得java。时间课
# 2 楼答案
在Java中,TimeZone类用于时区。要获取系统的默认时区,可以使用静态
getDefault
方法