输出不匹配将一个时区转换为另一个时区

时间:2015-05-06 11:54:55

标签: java date

我尝试将日期时区转换为另一个时区,我尝试使用以下代码进行转换,但它不起作用。

我正在使用JDK 1.3。我的目标是同时“在2015年5月6日星期五10:08:54 BST”,但有一个不同的时区标记。所以我的预期输出是:“5月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日历 提前谢谢。

2 个答案:

答案 0 :(得分:1)

您的返回时间是正确的 BST +1:00 IST +5:30所以当 10:08:54 < / em>在伦敦,新德里 14:38:54

答案 1 :(得分:1)

如果要在不更改时间/日期的情况下更改时区而不想使用Joda,则需要先将字符串解析为日期对象,然后使用旧日期对象重建新日期对象但注入你自己的时区。更改日期格式化程序上的时区也会更改时间/日期。

P.S。见Changing timezone without changing time in Java