Java日历时区转换为GMT问题



我有一个日历对象,它是根据用户的时区,可能是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 8Java SE 9,以及更高版本
    • 内置。
    • 标准Java API的一部分,捆绑实现。
  • Java 9增加了一些小的特性和修复。
  • Java SE 6Java SE 7
    • 大部分java。时间功能向后移植到Java 6;7在 ThreeTen-Backport
  • Android
    • Android版本的java bundle实现。时间类。
    • 对于早期的Android, ThreeTenABP项目适应ThreeTen-Backport(如上所述)。参见如何使用ThreeTenABP…
  • ThreeTen-Extra项目扩展了java。有额外课程的时间。这个项目是将来可能添加到java.time的试验场。您可以在这里找到一些有用的类,如IntervalYearWeekYearQuarter等。

    相关内容

    • 没有找到相关文章

    最新更新