0

のような日付形式"EEE, dd MMM yyyy HH:mm:ss Z"があり、日付は

String date = "Tue, 14 Aug 2012 07:26:33 +0000";

+0700日付形式を変更せずにタイムゾーンに変更するには?

これは私が試していることです

String sDate = null;
Date date = null;
try {
    sDate = "Tue, 14 Aug 2012 07:26:33 +0000";
    SimpleDateFormat curFormater = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");
    curFormater.setTimeZone(TimeZone.getTimeZone("GMT"));
    try {
        date = curFormater.parse(sDate);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
} catch (DropboxException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
lastUpdate.setText("Last Update : " + date.toString());

しかし、結果はTue Aug 14 14:26:33 ICT 2012

4

3 に答える 3

2

toString()もうすぐそこです。日付を正しく解析しましたが、既に作成した形式ではなく、デフォルトに依存しています。

代わりに、最後の行でこれを試してください。

lastUpdate.setText(curFormater.format(date));
于 2012-08-14T07:58:41.567 に答える
0

または、手動で時間数を追加したい場合は、次のようにすることができます。

static final Long oneHourInMilliseconds = new Long(3600000);
static final DateFormat d = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");

public static Long addHours(Date time, int hours)
{
    return time.getTime() + (hours * oneHourInMilliseconds);
}

public static void main(String[] args) throws ParseException
{
    String dateAsString = "Tue, 14 Aug 2012 07:26:33 +0000";
    Date before = d.parse(dateAsString);
    Date after = new Date(addHours(before, 7));
    System.out.println("Before: " + before + ". After: " + after);
}
于 2012-08-14T08:08:25.730 に答える
0

date -d は、このために Unix で機能します。

于 2012-12-31T19:07:48.480 に答える