为什么以下不起作用?似乎最后的字面零是原因......
final DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS0");
format.setLenient(false);
String d = format.format(new Date());
System.out.println(format.parse(d));
为什么以下不起作用?似乎最后的字面零是原因......
final DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS0");
format.setLenient(false);
String d = format.format(new Date());
System.out.println(format.parse(d));
我不知道为什么需要在模式末尾添加零 (0),但你应该将非模式字母包裹在 '' 中以使其工作:
final DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS'0'");
更多信息:
SimpleDateFormat
,文档开头的示例部分。您的代码的问题出在这一行
System.out.println(format.parse(d));
尝试将超过 3 位数的毫秒解析为 java.util.Date 将导致异常。解析字符串的模式应该是
"yyyy-MM-dd HH:mm:ss.SSS" //without the zero at the end, now your whole code will work...
如果您正在使用纳秒或您的数据有它们,您可以忽略这些值,Java Date/Time API 也不支持纳秒(在文档中他们甚至没有提到它)。
如果您真的非常需要将纳秒用于各种目的,那么您应该坚持使用 String 而不是 Date 对象。