您好 我有一个日期/时间字段我希望在Java中将当前的IST转换为CURRENT PST ...需要帮助....
例如:现在在IST中:13/may/2011 3.32.58pm
想要在PST中使用13/may/2011 3.02.58 AM
答案 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类代表Instant
中时间轴上的一个时刻,分辨率为UTC(小数部分最多九(9)位)。
以UTC格式获取当前时刻。
Instant instant = Instant.now();
调整为时区。
以continent/region
的格式指定nanoseconds,例如proper time zone name,America/Montreal
或Pacific/Auckland
。切勿使用诸如EST
或IST
之类的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 [欧洲/都柏林]
code run live at IdeOne.com框架内置于Java 8及更高版本中。这些类取代了麻烦的旧java.time日期时间类,例如legacy,java.util.Date
和& Calendar
现在位于SimpleDateFormat
的Joda-Time项目建议迁移到maintenance mode类。
要了解详情,请参阅java.time。并搜索Stack Overflow以获取许多示例和解释。规范是Oracle Tutorial。
从哪里获取java.time类?
How to use ThreeTenABP…项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如ThreeTen-Extra,Interval
,YearWeek
和YearQuarter
。