【发布时间】:2015-07-16 13:04:25
【问题描述】:
我尝试将日期时区转换为另一个时区,我尝试使用以下代码进行转换,但它不起作用。
我正在使用 JDK 1.3。我的目标是拥有相同的时间“2015 年 5 月 6 日星期三 10:08:54 BST”,但时区戳不同。所以我的预期输出是:“Wed May 6 10:08:54 IST 2015”。我不想计算差异。
我的代码:
public static void main(String[] args) {
try{
Test obj= new Test();
String date="Wed May 6 10:08:54 BST 2015";
System.out.println("Given Date = "+date);
Date dt=obj.getServerDate(date);
System.out.println("Returned Date = "+dt);
}
catch(Exception e)
{
e.printStackTrace();
}
}
public Date getServerDate(String str_date)
{
if (str_date == null)
return null;
Date pars_date = null;
try
{
DateFormat sdf = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy", Locale.ENGLISH);
pars_date = sdf.parse(str_date);
sdf.setTimeZone(TimeZone.getTimeZone("IST"));
}
catch(Exception e)
{
System.out.println(e);
}
return pars_date;
}
当我执行上面的代码时,我得到了以下输出:
Given Date = Wed May 6 10:08:54 BST 2015
Returned Date = Wed May 06 14:38:54 IST 2015
返回的日期不匹配,我尝试了很多来解决这个问题,但我不能。分享你的想法来解决这个问题。
注意:我不想要 Joda Time 日历 提前致谢。
【问题讨论】:
-
您期待什么?怎么回事?
-
您使用的是哪个 Java 版本? Java8 中的日期处理发生了变化。
-
你说返回的时间是正确的。我期待像 Wed May 6 10:08:54 IST 2015 @Brett Walker 这样的输出
-
2015 年 5 月 6 日星期三 10:08:54 BST 2015 年 5 月 6 日星期三 14:38:54 IST 2015。我在这里看不到问题。您想在 BST 中花点时间并使其成为相同的时间和日期,但在 IST 中?
-
@KaviChinna 请阅读stackoverflow.com/questions/2873119/… 解决方案基本上是从原始日期对象重建数据,但注入您自己的时区。尝试转换对象也会影响其余时间/日期。