0

我的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”,所以可能不是。

我如何阻止这个一小时的轮班发生?谢谢!

编辑:非常hacky的解决方案,但它有效:

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

0 回答 0