gpt4 book ai didi

java.lang.IllegalArgumentException : Illegal pattern character 'e' in java webapp 异常

转载 作者:行者123 更新时间:2023-11-28 23:57:16 24 4
gpt4 key购买 nike

我有一个在 tomcat 7.0.48 中运行的 java webapp,它在我的电脑(Ubuntu 16.04 LTS)中正常运行,但在服务器(Debian Squeeze)上,当我执行一个操作时它给出了这个异常:

java.lang.IllegalArgumentException: Illegal pattern character 'e'
at java.text.SimpleDateFormat.compile(SimpleDateFormat.java:826)
at java.text.SimpleDateFormat.initialize(SimpleDateFormat.java:634)
at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:605)
at com.opensymphony.webwork.components.Date.end(Date.java:307)
at com.opensymphony.webwork.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:21)
...

最佳答案

看看 SimpleDateFormat 的模式。如果它的格式类似于 ("eee, dd.MMM yyyy"),则将其更改为 ("EEEE, dd.MMM yyyy")。

由于您尚未发布代码,下面是一个产生错误的示例。

  public static void main(String[] args) throws ParseException {

String date = new SimpleDateFormat("eee, dd. MMM yyyy").format(new SimpleDateFormat("yyyy-MM-dd").parse("2017-07-21"));

}

如果您将运行上述程序,那么您将收到以下错误。线程“main”中的异常 java.lang.IllegalArgumentException:非法模式字符“e”

要解决此问题,您必须通过将字母 e 大写来修改模式。

   String date = new SimpleDateFormat("EEEE, dd. MMM yyyy").format(new SimpleDateFormat("yyyy-MM-dd").parse("2017-07-21"));

此外,请查看此处的文档,https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html然后在日期和时间模式部分,它说:

日期和时间格式由日期和时间模式字符串指定。在日期和时间模式字符串中,从“A”到“Z”以及从“a”到“z”的未加引号的字母被解释为表示日期或时间字符串组件的模式字母。可以使用单引号 (') 引用文本以避免解释。 "''"代表单引号。不解释所有其他字符;它们只是在格式化期间被复制到输出字符串中,或​​者在解析期间与输入字符串匹配。

如文档中所述,未加引号的字母将被视为模式字母。如果您不希望它被视为模式,则只需使用引号 ('e') 将字母 e 括起来。

下面是一个演示。假设我想打印当前日期后跟字母 e 后跟当前时间,然后我可以执行以下操作。

  SimpleDateFormat f =
new SimpleDateFormat("yyyy.MM.dd 'e' hh.mm.ss", Locale.ENGLISH);
System.out.println(f.format(new Date()));

运行上面的程序会得到以下输出。

2017.07.21 e 12.38.39

如果您取消对字母 e 的引号,那么您将得到 java.lang.IllegalArgumentException: Illegal pattern character 'e'

更新:字母 E 用于表示星期中的日期时间。如果你还想打印日期时间,那么就这样使用吧。

SimpleDateFormat f =
new SimpleDateFormat("yyyy.MM.dd EEEE hh.mm.ss zzz", Locale.ENGLISH);
System.out.println(f.format(new Date()));

O/P:2017.07.21 星期五 12.53.58 NPT

如果将 EEEE 替换为 E,则输出将为

O/P:2017.07.21 Fri 12.53.58 NPT

关于java.lang.IllegalArgumentException : Illegal pattern character 'e' in java webapp 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45229834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com