当前位置: 首页 > 知识库问答 >
问题:

在乔达时间如何在不更改时间的情况下转换时区

史淳
2023-03-14

我正在从数据库中获取UTC时间戳,我正在将其设置为JodaTimeDateTime实例

DateTime dt = new DateTime(timestamp.getTime());

它完美地存储时间,比如上午10:00,但带有当地时区。例如,我在IST时区,从UTC开始是5:30

我已经尝试了很多改变时区的东西,但每一件事都可以通过使用5:30的差异将时间从上午10:00更改为其他时间

有什么方法可以在不影响当前时间的情况下更改时区吗

编辑:如果我现在的时间是:

2013-09-25 11:27:34 AM      UTC

以下是我使用这个新的日期时间(时间戳.getTime())时的结果;

2013-09-25 11:27:34 AM  Asia/Kolkata

下面是我使用这个new DateTime(timestamp.getTime(),DateTimeZone.UTC)时的结果;

2013-09-25 05:57:34 AM  UTC

共有3个答案

方昊
2023-03-14

如果您的时间戳是:2015-01-01T00:00:00.000-0500(这是当地时间[对我来说])

试试这个:

DateTime localDt = new DateTime(timestamp.getTime())
    .withZoneRetainFields(DateTimeZone.UTC)
    .withZone(DateTimeZone.getDefault());

2014-12-31T19:00:00.000-05:00

分解它:这会为您提供一个与您的时间戳对应的DateTime,指定它是UTC:

new DateTime(timestamp.getTime())
    .withZoneRetainFields(DateTimeZone.UTC)

2015-01-01 T 00:00:00.000 Z

这为您提供了一个日期时间,但是该时间被转换为您的本地时间:

new DateTime(timestamp.getTime())
    .withZoneRetainFields(DateTimeZone.UTC)
    .withZone(DateTimeZone.getDefault());

2014-12-31T19:00:00.000-05:00

尉迟晔
2023-03-14

您可以使用DateTimewith ZoneRetainFields()方法来更改时区,而不更改日期中的数字。

狄英哲
2023-03-14

您可以使用类LocalDateTime

LocalDateTime dt = new LocalDateTime(t.getTime()); 

并将本地日期时间转换为日期时间

DateTime dt = new LocalDateTime(timestamp.getTime()).toDateTime(DateTimeZone.UTC);  

Joda DateTime将任何以毫秒为单位的时间视为“当前时区中自1970年以来的毫秒数”。因此,当您创建< code>DateTime实例时,它是用当前时区创建的。

 类似资料:
  • 问题内容: 我正在从数据库中获取UTC时间戳,这是我设置为JodaTime 实例的时间 它完美地存储了时间,但带有本地时区。例如,我处于IST时区,即UTC的+5:30 我尝试了很多更改时区的方法,但每件事都会通过使用+5:30时差将时间从其他时间更改为其他时间 有什么方法可以更改TimeZone而不影响当前时间 编辑:如果我当前时间是: 以下是我使用这个的结果 以下是当我使用它的结果; 问题答案

  • 我正在使用django模型。django设置中的TIMEZONE是UTC。并通过做一些算术来构建时间戳。 当我使用::timestamp时,时间戳返回为2021 07月26日00:00:00如果我使用::timestamp,它将变为2021 07月26日00:00:00,即使请求的\u时区是“美国/纽约” 我希望输出为2021 07月26日00:00:00-04:00,即显示与“附加美国/纽约”偏

  • 我在用org。乔达。时间LocalDate和LocalDateTime。我从外部源获得一个Unix时间戳,并希望从中生成一个LocalDate(时间)。关键是,在该外部系统的界面中定义,所有日期/时间都在UTC时区内。因此,我希望避免从该时间戳到本地系统的任何默认时区的任何隐式转换,这可能与UTC不同。有一个LocalDateTime的构造器用于这些事情,所以我尝试(作为一个例子): 结果让我有点

  • 问题内容: 我正在构建一个使用时间的应用程序。我决定用乔达时间。我正在尝试将joda时间添加到我的应用中。我没有将文件添加到库的经验。我遵循了这些步骤(请参阅底部),所以我想。我的项目没有显示任何错误,但是当我运行一个简单的测试时:我被强制关闭,并出现以下错误: 这些是我遵循的步骤: 在eclipse中创建您的android项目。 下载Joda时间 在Eclipse中,在Package Explo

  • 当将同一时间从Sri Jeyawardenepura转换回珀斯时(1/31/2005 11:30 PM),它转换到1/1/2006 3:00 AM。 时区换算为什么会有一个小时的差?

  • 我正在使用咖啡因缓存,并寻找一种方法来更新缓存中的值,而不更改其过期时间。 场景是我使用缓存来加速数据加载。数据更改延迟5秒是可以接受的,而我希望返回速度很快。此外,我希望这些缓存在第一次命中1天后过期,以避免不必要的内存使用。 因此,我希望每个缓存的密钥持续一天,但其值每5秒更新一次。 方法似乎已关闭,但刷新持续时间后的第一个返回值仍然是旧值。这对我来说并不理想,因为两次点击之间的持续时间可能是