我有一个linux应用程序,它以iOS-XR格式显示时区: tech system clock status local-time-string“10:16:12.523 CDT Thu Mar 21 2013”
我也看到linux“zdump”输出中正在使用“CDT”快捷方式:
zdump -v America / Havana | grep 2013 America / Havana Sun Mar 10 04:59:59 2013 UTC = Sat Mar 9 23:59:59 2013 CST isdst = 0 gmtoff = -18000 America / Havana Sun Mar 10 05:00:00 2013 UTC = Sun Mar 10 01:00:00 2013 CDT isdst = 1 gmtoff = -14400 America / Havana Sun 11月3日04:59:59 UTC =太阳11月3日00:59:59 CDT isdst = 1 gmtoff = -14400 America / Havana Sun Nov 3 05:00:00 2013 UTC = Sun Nov 3 00:00:00 2013 CST isdst = 0 gmtoff = -18000
但是当我运行“System.out.println(TimeZone.getTimeZone(”CDT“));” Java命令我得到GMT时区......
答案 0 :(得分:1)
1)看java.util.DateFormatSymbols.getZoneStrings,它返回一个数组
•zoneStrings[i][0] - time zone ID
•zoneStrings[i][1] - long name of zone in standard time
•zoneStrings[i][2] - short name of zone in standard time
•zoneStrings[i][3] - long name of zone in daylight saving time
我们可以在TimeZone.getTimeZone()中使用'时区ID',其余为SimpleDateFormat'z'通用时区
2)对于SimpleDateFormat,CDT没问题,请尝试
new SimpleDateFormat("z").parse("CDT");
它有效
答案 1 :(得分:1)
在哪里可以找到用于将时间字符串转换为“日期”对象的开源代码
在java.time类中构建Java。
LocalDate.parse( "2017-01-23" )
LocalTime.parse( "14:56:00" )
LocalDateTime.parse( "2017-01-23T07:56:00" )
OffsetDateTime.parse( "2017-01-23T07:56:00-07:00" )
ZonedDateTime.parse( "2017-01-23T07:56:00-07:00[America/Los_Angeles]" )
你正在使用现在遗留下来的麻烦的旧日期时间类,取而代之的是java.time类。
ZoneId
java.util.TimeZone
课程由java.time.ZoneId
和java.time.ZoneOffset
取代。时区是特定区域偏离UTC的历史记录。
遗留的java.time类中有许多糟糕的设计决策。使用3-4个字符的伪时区代码就是这样一个糟糕的选择。切勿使用诸如CDT
或EST
或IST
之类的3-4字母缩写,因为它们不是真正的时区,不是标准化的,甚至不是唯一的( !)。
相反,您应该以{{1}}的格式指定proper time zone name,例如America/Montreal
,Africa/Casablanca
或continent/region
。
避免使用设计糟糕的笨拙格式,例如“10:16:12.523 CDT Thu Mar 21 2013”,这些格式难以被人类阅读,难以通过机器解析,不必要地依赖英语,并且利用模糊(比没用!)伪时区。而是使用标准ISO 8601格式。默认情况下,java.time类使用这些格式。 Pacific/Auckland
类通过将大陆/区域时区名称附加在方括号中来扩展标准格式。
示例:
对于ISO 8601以外的格式,请使用ZonedDateTime
类。已经覆盖了数百次,所以搜索Stack Overflow以获取更多信息和示例。
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
从哪里获取java.time类?
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
和more。
答案 2 :(得分:0)