3

(2012 年 12 月 19 日午前 8 時 57 分 EST) を現地時間 (現在のインド時間) に変換できません。変換中に時間が間違っています (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)
    {
    }
}
4

1 に答える 1

2

タイム ゾーンは pubDate 文字列で既に指定されているため、timeZone を設定する必要はありません。別の 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);
    }
于 2012-12-19T14:17:05.963 に答える