我有一个日历对象,它是根据用户的时区,可能是PST等,现在我想将其转换为GMT并保留时间,即日历最初是在PST设置@ 00:00:00,考虑到时间/日期差异,转换后应转换为08:00:00。谁能在这方面给我一些帮助吗?
提前感谢您的帮助。
谢谢,
Vaibhav
创建一个新的GMT日历,将日历中的时间设置为与原始日历相同,然后您就完成了:
gmtCalendar.setTime(userCalendar.getTime());
应该没问题,因为getTime()
调用在时间上返回即时(即没有关联时区的java.util.Date
)。
和以前一样,如果您在Java中做大量的日期/时间工作,您应该强烈考虑使用Joda time。
br
( ( GregorianCalendar ) myCal ) // Cast from a general `Calendar` to specific subclass `GregorianCalendar`.
.toZonedDateTime() // Convert from troublesome legacy class to modern java.time class, `ZonedDateTime`.
.toInstant() // Extract a UTC-specific value, an `Instant` object.
<标题> java.time h1> ava。时间类。将您的遗留Calendar
对象(如果GregorianCalendar
)转换为ZonedDateTime
。调用添加到旧类中的新转换方法。
GregorianCalendar gc = ( GregorianCalendar ) myCal ;
ZonedDateTime zdt = gc.toZonedDateTime() ;
现在提取一个Instant
,一个总是在UTC的值。可以从概念上这样考虑:ZonedDateTime = (Instant + ZoneId)
Instant instant = zdt.toInstant() ;
为了获得更大的灵活性,例如生成各种格式的字符串,请转换为OffsetDateTime
对象。
OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC ) ;
<标题>对 java.time
java。time框架内置于Java 8及以后版本中。这些类取代了麻烦的旧的遗留日期时间类,如java.util.Date
, Calendar
, &SimpleDateFormat
.
Joda-Time项目,现在处于维护模式,建议迁移到java。时间类。
要了解更多信息,请参阅Oracle教程。并搜索Stack Overflow以获得许多示例和解释。规格为JSR 310。
使用符合JDBC 4.2或更高版本的JDBC驱动程序,您可以交换java。Time 直接与数据库关联。不需要字符串和java.sql。*类。从哪里获取java。时间类?
- Java SE 8, Java SE 9,以及更高版本
- 内置。
- 标准Java API的一部分,捆绑实现。
Java 9增加了一些小的特性和修复。
- 大部分java。时间功能向后移植到Java 6;7在 ThreeTen-Backport 。
- Android版本的java bundle实现。时间类。
- 对于早期的Android, ThreeTenABP项目适应ThreeTen-Backport(如上所述)。参见如何使用ThreeTenABP…。
Interval
、YearWeek
、YearQuarter
等。
标题>标题>