我很困惑如何做到这一点我有一个UTC的数据库日期我想用任何给定的格式转换用户kile IST,WAST,CST。我想知道我该怎么做。我正在传递客户端给出的区域值,这是我的代码:
从客户端获取价值我正在使用:
var localTimeZone = new Date().getTimezone();
之后我想要一个有三个参数的方法
targetTimeFromZone(Date date, String fromTZ, String toTZ);
其中fromTZ =" UTC"和toTZ =" IST"或CST或任何时区。
答案 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以获取更多示例和讨论。