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