在java中将IST转换为PST

时间:2011-05-13 10:04:06

标签: java datetime

您好       我有一个日期/时间字段我希望在Java中将当前的IST转换为CURRENT PST ...需要帮助....

例如:现在在IST中:13/may/2011 3.32.58pm想要在PST中使用13/may/2011 3.02.58 AM

谢谢........

2 个答案:

答案 0 :(得分:9)

如果您对当前时间感兴趣,则根本不需要了解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,它也非常简单。

答案 1 :(得分:0)

Answer by Jon Skeet是正确的,但现在已经过时了{8}代码到达Java 8及更高版本。

java.time

java.time类代表Instant中时间轴上的一个时刻,分辨率为UTC(小数部分最多九(9)位)。

以UTC格式获取当前时刻。

Instant instant = Instant.now();

调整为时区。

continent/region的格式指定nanoseconds,例如proper time zone nameAmerica/MontrealPacific/Auckland。切勿使用诸如ESTIST之类的3-4字母缩写,因为它们不是真正的时区,不是标准化的,甚至不是唯一的(!)。

ZoneId z = ZoneId.of( "America/Los_Angeles" );
ZonedDateTime zdt = instant.atZone( z );

要以标准Africa/Casablanca格式生成字符串,请调用toString。对于备用格式,请使用许多其他问题和解答中已涵盖的ISO 8601类。

String output = zdt.format( myDateTimeFormatter );

DateTimeFormatter中查看同一时刻,特别是India time

ZoneId zKolkata = ZoneId.of( "Asia/Kolkata" );
ZonedDateTime zdtKolkata = zdt.withZoneSameInstant( zKolkata );

我不确定IST你是指印度标准时间还是爱尔兰标准时间。我们也要覆盖Europe/Dublin。该区域恰好使用零偏移+00:00。所以它的Asia/Kolkata与UTC相同。

ZoneId zDublin = ZoneId.of( "Europe/Dublin" );
ZonedDateTime zdtDublin = zdt.withZoneSameInstant( zDublin );

请参阅此wall-clock time

  

instant.toString():2017-02-13T07:28:57.738Z

     

zdt.toString():2017-02-12T23:28:57.738-08:00 [America / Los_Angeles]

     

zdtKolkata.toString():2017-02-13T12:58:57.738 + 05:30 [亚洲/加尔各答]

     

zdtDublin.toString():2017-02-13T07:28:57.738Z [欧洲/都柏林]

关于java.time

code run live at IdeOne.com框架内置于Java 8及更高版本中。这些类取代了麻烦的旧java.time日期时间类,例如legacyjava.util.Date和& Calendar

现在位于SimpleDateFormatJoda-Time项目建议迁移到maintenance mode类。

要了解详情,请参阅java.time。并搜索Stack Overflow以获取许多示例和解释。规范是Oracle Tutorial

从哪里获取java.time类?

  • JSR 310Java SE 8以及之后
    • 内置。
    • 带有捆绑实现的标准Java API的一部分。
    • Java 9增加了一些小功能和修复。
  • SE 9Java SE 6
    • 大部分java.time功能都被反向移植到Java 6& 7 {in SE 7
  • ThreeTen-Backport
    • Android项目专门为Android调整 ThreeTen-Backport (如上所述)。
    • 请参阅ThreeTenABP

How to use ThreeTenABP…项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如ThreeTen-ExtraIntervalYearWeekYearQuarter