我想要一个 Java 中的 DateFormatter,以便我可以在日期表达式中指定一些特殊字符和数字。例如:
String dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS zzz";
这里 dd 用于指定月份中的某一天,它是数字。 但我需要创建一个日期,如下所示:
String stringDate = "2017-12-??T00:00Z";
SimpleDateFormat formatter = new SimpleDateFormat(dateFormat);
formatter.parse(stringDate);
我收到一个无法解析的异常,因为此处指定的日期是 ?? 。有没有解决方法,或者我必须编写一个新的解析器?
谢谢
最佳答案
尝试使用单引号转义附加文字
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-'??T'HH:mm:ss.SSS zzz");
此外,给定的值和格式应该匹配(可以根据需要编辑字符串日期),在您的情况下,以下语法将起作用。
String stringDate = "2017-12-??T00:00Z";
Date date = (new SimpleDateFormat("yyyy-MM-'??T'HH:mmZ")).parse(stringDate.replaceAll("Z$", "+0000"));
System.out.println("date: " + (new SimpleDateFormat("yyyy-MM-dd'??T'HH:mmZ")).format(date));
请注意,“Z”表示该时区也符合 RFC 822 时区标准。
关于java - 在 SimpleDateFormat 中包含通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60488677/