Hi 我有一个日期/时间字段,我想在 java 中将当前 IST 转换为当前 PST...需要帮助....
例如:现在在 IST 中,它 : 13/may/2011 3.32.58pm
希望在 PST 中相同,即 13/may/2011 3.02.58 AM
谢谢。。。。。。。。
如果您对当前时间感兴趣,则根本不需要了解 IST...只是当前实例,并转换为 PST。您可以使用以下内容来执行此操作:
Date now = new Date();
TimeZone zone = TimeZone.getTimeZone("America/Los_Angeles"); // For example...
DateFormat format = new SimpleDateFormat("..."); // Put your pattern here
format.setTimeZone(zone);
String text = format.format(now);
就个人而言,我建议您使用 Joda Time 进行所有日期/时间工作,因为它是一个更好的 API - 但在这种情况下,即使使用内置 API,它也非常简单。
Jon Skeet的答案是正确的,但随着Java 8及更高版本中java.time代码的到来,现在已经过时了。
java.time
Instant
类以 UTC 表示时间轴上的时刻,分辨率为纳秒(最多九 (9) 位小数
以 UTC 格式获取当前时刻。
Instant instant = Instant.now();
调整为时区。
以 continent/region
的格式指定正确的时区名称,例如 America/Montreal
、 Africa/Casablanca
或 Pacific/Auckland
。切勿使用 3-4 个字母的缩写,例如 EST
或 IST
,因为它们不是真正的时区,不是标准化的,甚至不是唯一的(!)。
ZoneId z = ZoneId.of( "America/Los_Angeles" );
ZonedDateTime zdt = instant.atZone( z );
要生成标准 ISO 8601 格式的字符串,请调用 toString
。对于备用格式,请使用许多其他问题和答案中已经介绍的DateTimeFormatter
类。
String output = zdt.format( myDateTimeFormatter );
看到印度时间的同一时刻,特别是Asia/Kolkata
.
ZoneId zKolkata = ZoneId.of( "Asia/Kolkata" );
ZonedDateTime zdtKolkata = zdt.withZoneSameInstant( zKolkata );
我不确定你说IST
是指印度标准时间还是爱尔兰标准时间。让我们也介绍一下Europe/Dublin
。该区域恰好当前使用零偏移量,+00:00
.所以它的挂钟时间与UTC相同。
ZoneId zDublin = ZoneId.of( "Europe/Dublin" );
ZonedDateTime zdtDublin = zdt.withZoneSameInstant( zDublin );
查看此代码在 IdeOne.com 实时运行。
instant.toString(): 2017-02-13T07:28:57.738Z
zdt.toString(): 2017-02-12T23:28:57.738-08:00[美国/Los_Angeles]
zdt加尔各答.toString(): 2017-02-13T12:58:57.738+05:30[亚洲/加尔各答]
zdtDublin.toString(): 2017-02-13T07:28:57.738Z[欧洲/都柏林]
关于 java.time
java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧传统日期时间类,如java.util.Date
、Calendar
和SimpleDateFormat
。
Joda-Time 项目现在处于维护模式,建议迁移到 java.time 类。
要了解更多信息,请参阅 Oracle 教程。并搜索堆栈溢出以获取许多示例和解释。规范为 JSR 310。
从哪里获得java.time类?
- Java SE 8 和 SE 9 及更高版本
- 内置。
- 具有捆绑实现的标准 Java API 的一部分。
- Java 9添加了一些小功能和修复。
- Java SE 6 和 SE 7
- 许多java.time功能在ThreeTen-Backport中向后移植到Java 6和7。
- 人造人
- ThreeTenABP项目专门为Android改编了ThreeTen-Backport(如上所述)。
- 请参阅如何使用ThreeTenABP...。
ThreeTen-Extra项目通过额外的类扩展了java.time。这个项目是未来可能添加到java.time的试验场。你可以在这里找到一些有用的类,如Interval
、YearWeek
、YearQuarter
等。