Java 更改时区而不更改日期格式

Java 更改时区而不更改日期格式,java,android,date,simpledateformat,Java,Android,Date,Simpledateformat,我有日期格式像“EEE,dd-MMM-yyy-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 =

我有日期格式
“EEE,dd-MMM-yyy-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());

但结果是,ICT 2012年8月14日星期二14:26:33

你就快到了,你已经正确地解析了日期,但是你依赖的是默认的
toString()
,而不是你已经创建的格式

请在最后一行中尝试以下操作:

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

或者,如果您想添加一个手动小时数,您可以这样做:

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

date-d在Unix中可以实现这一点。

解析日期,然后在其中输出它format@therefromhere我的意思是更改时区啊,这就是我的意思-解析日期、更改时区和输出。@从这里请查看我编辑的问题谢谢帮助,
curformatter.setTimeZone(timezone.getDefault()),在我将时区设置为默认值后,它工作了。啊,是的,我在看格式,而不是TZ的东西。因此,无论您的环境设置为使用什么,都将输出。