标签: timezone-offset

如何从java中的时区偏移量获取时区?

我知道如何得到相反的结果。给定一个时区,我可以通过以下代码片段获取时区偏移量:

TimeZone tz = TimeZone.getDefault();
System.out.println(tz.getOffset(System.currentTimeMillis()));
Run Code Online (Sandbox Code Playgroud)

我想知道如何从时区偏移量获取时区名称。

鉴于,

timezone offset = 21600000(以毫秒为单位;+6.00 偏移量)

我想获得以下任何可能的时区名称的结果:

(GMT+6:00) Antarctica/Vostok
(GMT+6:00) Asia/Almaty
(GMT+6:00) Asia/Bishkek
(GMT+6:00) Asia/Dacca
(GMT+6:00) Asia/Dhaka
(GMT+6:00) Asia/Qyzylorda
(GMT+6:00) Asia/Thimbu
(GMT+6:00) Asia/Thimphu
(GMT+6:00) Asia/Yekaterinburg
(GMT+6:00) BST
(GMT+6:00) Etc/GMT-6
(GMT+6:00) Indian/Chagos
Run Code Online (Sandbox Code Playgroud)

java timezone calendar gregorian-calendar timezone-offset

5
推荐指数
1
解决办法
2万
查看次数

Angular-Ui Bootstrap Popup DatePicker 的 ngModelOptions 的时区属性

我们在应用程序中使用 Angular-Ui Bootstrap Popup DatePicker,并且遇到了诸如此类的问题:前一天被选择为用户实际选择的日期。

我们将选择器的日期设置为来自服务器 (json) 的 UTC。虽然 Javascript Date 对象是本地的,因此不匹配。

作为解决方案(显然),他们添加了一个 ngModelOptions 并且我看到它的用法如下:

var date = new Date()
$scope.timezone = ((date.getTimezoneOffset() / 60) * -100)
Run Code Online (Sandbox Code Playgroud)

带标记

<input type="date" 
    ng-model="dateModel" 
    ng-model-options="{timezone: timezone}" /> 
Run Code Online (Sandbox Code Playgroud)

但是该选择器的 doco 并没有真正解释它如何使用/消耗该时区属性。我能找到的最接近的解释是 ngModelOptions 本身的 doco,其中写道:

您可以通过在 timezone 属性中提供时区名称来指定日期/时间输入指令所需的时区。

我希望有人能够简要解释一下该选择器如何使用 ngModelOptions 指令的时区属性,以及我是否应该将其设置为 utc 或将浏览器偏移设置为 utc。

谢谢

javascript timezone timezone-offset angularjs angular-ui-bootstrap

5
推荐指数
1
解决办法
1967
查看次数

MST 被映射到 joda 中的丹佛时区,当前是 MDT。这是 joda DateTimeZone 中的错误吗?

我需要转换GMT为亚利桑那州时间。亚利桑那州目前已MST关闭夏令时。

然而在 Joda TimeDateTimeZone代码中,MST已映射到America/Denver

map.put("MST", "America/Denver");
Run Code Online (Sandbox Code Playgroud)

可以看出,目前丹佛实行夏令时,因此有MDTDateTimeZone那么为什么要在代码中进行这样的映射呢?

在从 转换为亚利桑那州本地时区时GMT,我得到了偏移量,因为GMT-6这是错误的,而且应该是这样GMT-7,因为MST没有夏令时。

这是一个错误吗?如何解决问题?

java jodatime timezone-offset

5
推荐指数
1
解决办法
1350
查看次数

SimpleDateFormat.parse() 忽略时区?

我正在尝试使用此代码来解析带有时区的日期字符串进行测试:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mmZZZZZ", Locale.US);
Calendar calendar = Calendar.getInstance();
calendar.setTime(sdf.parse("2017-07-26T06:00-06:00"));
int offset = calendar.getTimeZone().getRawOffset();
Run Code Online (Sandbox Code Playgroud)

我正在尝试将时区从 更改-06+09,但offset始终包含10800000.

如何正确解析带有时区的日期(我需要时间和时区)?

android simpledateformat datetime-parsing timezone-offset

5
推荐指数
1
解决办法
2841
查看次数

如何在 Java 中向时间戳添加/减去时区偏移量?

ZonedDateTime我正在使用 JDK 8,并且Timestamp经常使用它。但我仍然无法解决我面临的问题。

假设我得到了TimestampGMT (UTC) 格式的文件,并且我的服务器位于某处。假设它设置为Asia/CalcuttaTimeZone (其 ZoneOffset 为+05:30)。

基本上如何在时间戳中添加/减去我的时区偏移量?

Input : 2017-09-13 13:10:30.333
Output: 2017-09-13 18:40:30.333
Run Code Online (Sandbox Code Playgroud)

解释 :在输入中,时区偏移量 5hrs 30mts 已添加到输入中。此外,输入是 Timestamp 类型,输出也是 Timestamp 类型。

我使用ZoneID.systemDefault()函数来检索 JVM 已知的时区。就我而言,时区结果是Asia/Calcutta.

java timezone datetime timezone-offset java-time

5
推荐指数
1
解决办法
2万
查看次数

new Date() 返回相对时间而不是 UTC 时间

当我转到浏览器开发工具并在控制台中编写 new Date() 时,它会给出以下内容

Mon Dec 18 2017 17:11:29 GMT+0200
Run Code Online (Sandbox Code Playgroud)

我认为它应该返回 UTC 时间。

问题是我在 AWS 上有一台服务器,它将 UTC 时间写入数据库。它将它写为字符串,在客户端我执行以下操作

const updatedMilliAgo = new Date() - new Date(timeStrFromDb);
Run Code Online (Sandbox Code Playgroud)

由于某种原因,差异甚至是两个小时,因为我在写入服务器后立即检查它。

我在这里做错了什么?

javascript timezone timezone-offset

5
推荐指数
2
解决办法
1万
查看次数

Ruby/Rails DateTime.utc.iso8601 和 Time.utc.iso8601 格式不同

由于 Rails 对日期对象进行了猴子修补,因此我不清楚这是 Rails 特定行为还是 Ruby 特定行为。

DateTime.now.utc.iso8601
=> "2018-02-20T06:31:44+00:00"

Time.now.utc.iso8601
=> "2018-02-20T06:31:44Z"
Run Code Online (Sandbox Code Playgroud)

请注意一个具有时区字符串“+00:00”,另一个具有字符串“Z”。它们在 iso8610 标准中是等效的,但我试图在给定任一起始类类型的情况下生成相同的字符串。

Time 上的 Ruby 文档甚至没有记录该#iso8601方法,他们只是展示了它在不同上下文中的使用情况,所以我不确定如何弄清楚发生了什么。

ruby timezone ruby-on-rails timezone-offset

5
推荐指数
0
解决办法
3963
查看次数

如何使用javascript中的时区名称和区域在UTC中查找时区偏移量

我正在从GoogleMicrosoft获取用户的日历时区。Google 在其日历 API响应中提供时区区域: timezone: Asia/Kolkata

虽然Microsoft Graph API提供了这样的时区详细信息,但timezone: 'Indian Standard Time' 我想以offset秒为单位找到时区以对日期对象执行一些操作。

是否有不同的方式或某些来源可以让我以csvjson的形式获取所有这些详细信息,这些详细信息可以导入到数据库表中并用于进一步的操作?

PS:我查看了一些示例,moment.js但发现它对我的用例没有帮助

javascript timezone datetime timezone-offset

5
推荐指数
1
解决办法
4417
查看次数

OffsetDateTime - 打印偏移量而不是 Z

我有这个代码:

String date = "2019-04-22T00:00:00+02:00";

OffsetDateTime odt = OffsetDateTime
      .parse(date, DateTimeFormatter.ISO_OFFSET_DATE_TIME)                             
      .withOffsetSameInstant(ZoneOffset.of("+00:00"));

System.out.println(odt);
Run Code Online (Sandbox Code Playgroud)

这个打印: 2019-04-21T22:00Z

如何打印2019-04-21T22:00+00:00?用 offset 代替Z.

java datetime-format timezone-offset java-time

5
推荐指数
2
解决办法
2077
查看次数

无法获得 local 和 utc Instant

我需要以秒为单位获取本地时间和 UTC 时间。我在 StackOverflow 中阅读了一些帖子并找到了一些解决方案,正如前面提到的那样:

    Instant time = Instant.now();
    OffsetDateTime utc = time.atOffset(ZoneOffset.UTC);
    int utcTime = (int) utc.toEpochSecond();
    int localTime = (int) time.getEpochSecond();
    System.out.println("utc " + utcTime + " local " + localTime);
Run Code Online (Sandbox Code Playgroud)

但结果并不是我所期望的。现在是UTC时间。输出:

utc   1593762925
local 1593762925
Run Code Online (Sandbox Code Playgroud)

调试后我发现 Instant.now() 已经是 utc。我找不到如何在当前时区(即我的系统区域)中获取时间。

我在 API 中找到了一些解决方案,但出现错误:

OffsetDateTime utc = time.atOffset(ZoneOffset.of(ZoneOffset.systemDefault().getId()));
Run Code Online (Sandbox Code Playgroud)

线程“main”中的异常 java.time.DateTimeException:ZoneOffset 的 ID 无效,格式无效:Europe/Astrakhan 在 java.base/java.time.ZoneOffset.of(ZoneOffset.java:241)

UPD:我的问题是如何在本地时区和 UTC 中以秒为单位获取当前时间?即自 1970-01-01T00:00:00 GMT+4 和 1970-01-01T00:00:00 GMT+0 以来的秒数

UPD2:我有一些设备需要从 1970 年开始以秒为单位的 UTC 时间和以秒为单位的发件人本地时间响应。为什么?我不知道。对我来说是黑匣子。

java timezone-offset

5
推荐指数
1
解决办法
259
查看次数