如何将Date Object转换为UTC给定的任何时区,如IST,WAST

时间:2014-06-10 18:32:49

标签: java javascript date datetime

我很困惑如何做到这一点我有一个UTC的数据库日期我想用任何给定的格式转换用户kile IST,WAST,CST。我想知道我该怎么做。我正在传递客户端给出的区域值,这是我的代码:

从客户端获取价值我正在使用:

var localTimeZone = new Date().getTimezone(); 

之后我想要一个有三个参数的方法

targetTimeFromZone(Date date, String fromTZ, String toTZ);

其中fromTZ =" UTC"和toTZ =" IST"或CST或任何时区。

1 个答案:

答案 0 :(得分:2)

避免使用java.util.Date和.Calendar,因为它们非常麻烦。在Java 8中使用Joda-Time或java.time包。

Per Jon Skeet的评论,避免使用3或4个字母的时区代码,因为它们既不标准也不唯一。使用proper time zone names.

与j.u.Date不同,Joda-Time中的DateTime知道自己指定的时区。

DateTimeZone timeZone = DateTimeZone.forID( "Asia/Kolkata" ); // or get the default time zone.

将日期转换为日期时间。

java.util.Date someDate = new java.util.Date(); // As if we were passed a Date.
DateTime dateTime = new DateTime( someDate, timeZone );

调整时区。

DateTime dateTimeMontréal = dateTime.withZone( DateTimeZone.forID( "America/Montreal" ) );
DateTime dateTimeUtc = dateTime.withZone( DateTimeZone.UTC );

如果其他类需要,请生成java.util.Date对象。

java.util.Date date = dateTime.toDate();

搜索StackOverflow以获取更多示例和讨论。