在运行一些测试时,我遇到了以下问题。使用时:
private String printStandardDate(Date date) {
return DateFormat.getDateTimeInstance(
DateFormat.SHORT, DateFormat.SHORT).format(date);
}
我发现这会根据运行测试的位置产生不同格式的日期。所以在本地 Windows / Eclipse 中我得到了结果: 04/02/12 18:18 但在美国的 Linux 盒子上我得到了 2/4/12 6:18 PM
这导致我的测试/构建失败:
预期: 但实际是:
有人能解释这种行为吗?
这并不奇怪,这正是它应该如何工作的。
API 文档DateFormat.getDateTimeInstance
says:
获取具有给定日期和时间格式样式的日期/时间格式化程序对于默认区域设置。
Windows 系统上的默认区域设置与美国 Linux 系统上的默认区域设置不同。
如果您想精确控制日期和时间格式,请使用SimpleDateFormat
并自行指定格式。例如:
private String printStandardDate(Date date) {
return new SimpleDateFormat("dd/MM/yy HH:mm").format(date);
}
更好的是重新使用SimpleDateFormat
对象,但要注意它不是线程安全的(如果该方法可能同时从多个线程调用,那么如果这些线程使用相同的方法,事情就会变得混乱SimpleDateFormat
目的)。
private static final DateFormat DATE_FORMAT =
new SimpleDateFormat("dd/MM/yy HH:mm");
private String printStandardDate(Date date) {
return DATE_FORMAT.format(date);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)