java - 在 SimpleDateFormat 中包含通配符

标签 java regex simpledateformat

我想要一个 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/

相关文章:

java - Java 移位操作实现背后的逻辑

java - 需要根据分隔符分割字符串,但它们被分组

java - 格式化 google api 客户端 DateTime 时出现 "Cannot format given Object as a Date"错误

javascript - jquery:如何使用正则表达式获取 "- "前后的文本

java - Java中的日期格式问题

java - 隐式设置什么时区?

java - 为什么 javac -source 1.5 允许在接口(interface)方法上使用 @Override?

Java:需要按 Enter 才能触发操作和操作监听器

java - 为什么我的 java 文件看不到 R 文件中的新元素?

regex - 我的正则表达式是错误的还是 td-agent 的格式行为中存在错误行为?