Java字符串到日期不带时区
我有类似字符串的日期Java字符串到日期不带时区,java,date,simpledateformat,Java,Date,Simpledateformat,我有类似字符串的日期200901 在android设备上,我将其转换为日期: private static final SimpleDateFormat CARD_DATE_FORMAT = new SimpleDateFormat("yyMMdd", Locale.getDefault()); public static Date toCardDateFormat(String date) { try { return CARD_DATE_FORMAT
200901
在android设备上,我将其转换为日期:
private static final SimpleDateFormat CARD_DATE_FORMAT = new SimpleDateFormat("yyMMdd", Locale.getDefault());
public static Date toCardDateFormat(String date) {
try {
return CARD_DATE_FORMAT.parse(date);
} catch (ParseException e) {
return null;
}
}
我得到日期:9月1日星期二00:00:00 GMT+2020年7:00
之后,我将此日期传递给spring controller,在controllers方法中,我将此日期设置为:
Mon Aug 31 20:00:00 GMT+03:00 2020
您正在默认时区中解析日期,这将取决于为设备配置的时区,但它似乎是GMT+7
运行Spring的服务器似乎位于GMT+3
时区,当它以默认时区打印日期时,它使用的就是这个时区
由2020-09-01T00:00:00+07:00
和2020-08-31T20:00:00+03:00
表示的实际瞬间是相同的
整个查询是由两台不同的计算机在同一时刻打印其本地时区中格式化的日期而产生的。如何将
日期
传递回Spring控制器?我建议您避免使用SimpleDataFormat
类。它不仅与日期一起过时很长时间,而且还出了名的麻烦。今天我们的生活好多了。顺便说一句,日期没有时区。不能有。解决方案是使用java.time
中的LocalDate
。这是一个没有时间和时区的日期。没有混淆的余地。:-)对于早期的Android,您应该使用ThreeTenABP项目,该项目适应ThreeTen Backport项目。永远不要使用最早的Java版本中最麻烦的遗留日期时间类。