SimpleDateFormat将我的时间缩短了一个小时

时间:2013-08-21 03:24:45

标签: android simpledateformat

我的SimpleDateFormat时区问题。这是我的代码:

TextView date_time = (TextView) view.findViewById(R.id.date_time);
SimpleDateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.US);
Date date = null;
try {
    date = df.parse(workout.getDate().toString());
    System.err.println("position: " + position + " workout: " + workout.getDate().toString());
    System.err.println("position: " + position + " date: " + date);
} catch (ParseException e) {
    e.printStackTrace();
}
df = new SimpleDateFormat("EEEE, MMMMM dd", Locale.US);
date_time.setText(df.format(date));

请注意此输出:

position: 0 workout: Mon Aug 19 00:00:00 MDT 2013
position: 0 date: Sun Aug 18 23:00:00 MDT 2013

你是否看到字符串如何开始(正确),日期是8月19日(午夜)。但是在格式化器完成其工作之后,我提前1小时出来。我假设这是一些时区操作,但我不知道如何纠正它。我为'Z'尝试了一些不同的值(包括'Z','ZZZ','ZZZZ'和'ZZZZZ'),但都给出了相同的结果。我认为这是一个时区问题,但在两种情况下都显示'MDT',所以可能没有。

如何阻止这一小时的转变?谢谢!

编辑:非常糟糕的解决方案,但它确实有效:

try {
    date = df.parse(workout.getDate().toString());
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.add(Calendar.HOUR_OF_DAY, 1);
    date = cal.getTime();
} catch (ParseException e) {
    e.printStackTrace();
}

0 个答案:

没有答案