如何从日期获取时区

Rah*_*war 0 java datetime

我正在尝试从现有日期获取时区以将其用于其他日期转换。有人可以回复更新以下代码中的待办事项。感谢任何帮助。

或者只是为了简单起见,是否有一些我给 +0530 的 java api,它返回 IST :)

这是我的代码:

import java.text.SimpleDateFormat
import java.util.*;
import java.text.DateFormat;

SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
Date date = isoFormat.parse("2016-04-21T00:00:00+0530");

//todo print time zone 
//todo here should print IST since date is having +0530
Run Code Online (Sandbox Code Playgroud)

Hen*_*nry 5

这不可能。ADate没有附加时区信息。它只是一个时间点,内部表示为自 1.1.1970 UTC 午夜起的毫秒数(不包括闰秒)。


And*_*eas 5

Ajava.util.Date没有时区。这是 UTC 中的纯时间。解析器将字符串转换为内部值。

A java.time.ZonedDateTime(Java 8+) 确实有时区。

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ssZ");
ZonedDateTime dt = ZonedDateTime.parse("2016-04-21T00:00:00+0530", formatter);
ZoneId zone = dt.getZone();
Run Code Online (Sandbox Code Playgroud)

如果运行 Java 6 或 7,请使用Java SE 8 日期时间类的向后移植
对于 Java 5+,请使用Joda-Time 库

  • 您通常无法从时区偏移量获取时区名称,因为有许多名称使用相同的偏移量。 (3认同)