【发布时间】:2012-07-28 20:41:54
【问题描述】:
我有一个日期,例如 2000-01-01T10:00:00Z 。这代表商店的营业时间,因此这意味着商店在 10 点钟营业。其他信息没用,是随机日期。
我只需要将其表示为字符串:10:00。
对于这种转换,我使用了一个简单的方法:
public String dateToString(Date date){
SimpleDateFormat ft = new SimpleDateFormat ("HH:mm");
String time= ft.format(date);
return time;
}
我认为这应该可行,大写 HH 表示 24 小时的时间。但是当我运行这段代码时,返回值为 11:00 ! 为什么会这样,如何预防?格式功能是否会查看我的时区并且日期中的设置是否错误(我认为我的手机设置是 mgt+1,因为我住在荷兰)?以及如何忽略这一点?
【问题讨论】:
-
Z表示 GMT+0,所以是时区错误。 -
我在伊朗遇到了同样的问题。当我在我的操作系统上禁用夏令时(通过使用不支持夏令时的 TimeZone)一切都变得正确!
-
@AmirPashazadeh 更改主机操作系统的默认时区并不是解决此问题的最佳方法。相反 (a) 使用 java.time 类,并且 (b) 始终在日期时间类的各种方法中指定可选的时区参数。
标签: java android string date time