在java中将EST时间转换为本地时间

时间:2012-12-19 13:58:22

标签: java datetime timezone simpledateformat

我无法将(12/19/2012美国东部时间上午8:57)转换为当地时间(现为印度时间)。 虽然转换我错了时间(2012年12月19日11:27)。我正在使用以下代码:

private void convertEdtToLocalTime(String pubDate)
{
    //pubDate = 12/19/2012 8:57am EST;
    String localPubDate;
    try
    {
        SimpleDateFormat sdf = new SimpleDateFormat(
            "MM/dd/yyyy HH:mma z");
        TimeZone timeZone = TimeZone.getDefault();
        sdf.setTimeZone(timeZone);
        if (pubDate != null)
        {
            Date date = sdf.parse(pubDate);
            sdf = new SimpleDateFormat("MMM dd yyyy HH:mm");
            localPubDate = sdf.format(date);
        }
    }
    catch (ParseException e)
    {
    }
}

1 个答案:

答案 0 :(得分:2)

您不需要将timeZone设置为pubDate字符串中已指定的时区。如果要使用不同的SDF进行格式化,默认时区会将其转换为默认时区。例如。如果你在印度,IST时间= 2012年12月19日19:27

private static  void convertEdtToLocalTime(String pubDate)
    {
        //pubDate = 12/19/2012 8:57am EST;
        String localPubDate=null;
        try
        {
            SimpleDateFormat sdf = new SimpleDateFormat(
                "MM/dd/yyyy HH:mma z");
//          TimeZone timeZone = TimeZone.getDefault(); // No need to do it
//          sdf.setTimeZone(timeZone);
            if (pubDate != null)
            {
                Date date = sdf.parse(pubDate);
                sdf = new SimpleDateFormat("MMM dd yyyy HH:mm");
                localPubDate = sdf.format(date);
            }
        }
        catch (ParseException e)
        {
        }
        System.out.println(localPubDate);
    }