2012-08-14 93 views
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

+2

解析日期,然後將它輸出該格式 – 2012-08-14 07:37:36

+1

@therefromhere我的意思更改時區 – Sieryuu 2012-08-14 07:44:23

+0

是啊,這就是我的意思 - 解析日期,更改時區和輸出。 – 2012-08-14 07:46:31

回答

2

你就要成功了,你已經正確地解析日期,但你依賴於默認toString()而不是你已經創建的格式。

試試這個最後一行:

lastUpdate.setText(curFormater.format(date)); 
+0

感謝您的幫助,'curFormater.setTimeZone(TimeZone.getDefault());',在我將時區設置爲默認值後,它的工作原理 – Sieryuu 2012-08-14 08:05:06

+0

啊是的,我在看格式而不是TZ的東西。所以這將輸出在你的環境設置使用的任何TZ中。 – 2012-08-14 08:07:22

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); 
} 
+0

感謝您的建議 – Sieryuu 2012-08-14 08:13:41

0

日期-d在Unix上爲此工作。