这里我给出的参数有月,日,小时,秒,如(2,14,11,0),第一个设置区域值(IST)。
Calendar localTime = Calendar.getInstance();
localTime.setTimeZone(TimeZone.getTimeZone(zoneValue));
localTime.set(2018, month, date, hourofday,minutes,seconds);
在下面的代码中,短名称是其他时区,例如:" PST",在将第一个日历设置为以下日历后,我没有获得与第一个日历参数相关的有效日期时间。
Calendar germanyTime = new GregorianCalendar(TimeZone.getTimeZone(shortName));
germanyTime.setTimeInMillis(localTime.getTimeInMillis());
我们公司仍在使用java 1.6。
请提前帮助我。
答案 0 :(得分:1)
发布前搜索Stack Overflow。这已经多次得到解决。并阅读Oracle教程。这里简要介绍......
ZonedDateTime.of( 2018 , 1 , 23 , 12 , 34, 56 , 0 , ZoneId.of( “Asia/Kolkata” ) )
.withZoneSameInstant( ZoneId.of( “Europe/Berlin” ) )
使用现代 java.time 类来取代您使用的麻烦的旧版日期时间类。
ZonedDateTime
将这些参数传递给ZonedDateTime.of
而不是遗留Calendar
。
ZoneId
对于时区,请传递ZoneId
个对象,而不是旧版TimeZone
。
切勿使用3-4个字母伪区域,如“PST”,“CST”和“IST”。始终使用大陆/地区格式的正确时区名称,例如America/Los_Angeles
或Africa/Tunis
。
ZonedDateTime zdt = ZonedDateTime.of( 2018 , 1 , 23 , 12 , 34, 56 , 0 , ZoneId.of( “Asia/Kolkata” ) ) ;
调整到另一个区域。同一时刻,时间轴上的同一点,不同的挂钟时间。
ZonedDateTime zdt2 = zdt.withZoneSameInstant( ZoneId.of( “Europe/Berlin” ) ) ;
DateTimeFormatter
通过调用ZonedDateTime::toString
以标准ISO 8601格式生成字符串。对于其他格式,请使用DateTimeFormatter
类。
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
使用符合JDBC driver或更高版本的JDBC 4.2,您可以直接与数据库交换 java.time 对象。不需要字符串也不需要java.sql。* classes。
从哪里获取java.time类?
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
和more。