Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java数据格式_Java_Date Format - Fatal编程技术网

Java数据格式

Java数据格式,java,date-format,Java,Date Format,我知道Java日期时间不是一个很好的前进方式,但我只是好奇到底发生了什么: 为什么会出现以下行: DateFormat df=new SimpleDateFormat(“dd-MMM-yyyy”,Locale.US) 不会产生任何错误,并且以下行会: DateFormat df=new SimpleDateFormat(“DD-MMM-YYYY”,Locale.US) DateFormat df=new SimpleDateFormat(“dd-mm-YYYY”,Locale.US) 将引发以下

我知道Java日期时间不是一个很好的前进方式,但我只是好奇到底发生了什么:

为什么会出现以下行:

DateFormat df=new SimpleDateFormat(“dd-MMM-yyyy”,Locale.US)

不会产生任何错误,并且以下行会:

DateFormat df=new SimpleDateFormat(“DD-MMM-YYYY”,Locale.US)

DateFormat df=new SimpleDateFormat(“dd-mm-YYYY”,Locale.US)

将引发以下异常:

Exception in thread "main" java.lang.IllegalArgumentException: Illegal pattern character 'Y'

    at java.text.SimpleDateFormat.compile(SimpleDateFormat.java:769)
    at java.text.SimpleDateFormat.initialize(SimpleDateFormat.java:576)
    at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:501)
    at testing.MySchedule.main(MySchedule.java:18)
线程“main”java.lang.IllegalArgumentException中的异常:非法模式字符“Y” 位于java.text.simpleDataFormat.compile(simpleDataFormat.java:769) 在java.text.simpleDataFormat.initialize(simpleDataFormat.java:576) 位于java.text.simpleDataFormat。(simpleDataFormat.java:501) main(MySchedule.java:18) 我是说我只是换了个案子,对吗?但DateFormat真的那么蠢吗,还是我做错了什么?或者它与我使用的语言环境有关


欢呼声

m
D
在简化格式模式中有自己的含义:

但是你在那张表中找不到
Y

它不是“哑巴”,它只是一个无效的模式。请看一下API:
此外,J2SE 7中更新了SimpleDataFormat用法,并允许现在使用Y

您不仅更改了大小写,还更改了格式的含义:

  • Y
    不存在
  • M
    代表一年中的月份
  • m
    代表分钟(小时)
  • D
    代表一年中的
  • d
    表示月份中的
DD-MMM-YYYY
DD-mm-YYYY
格式没有任何意义

使用(小写)y表示年份

M = month
m = minute
d = 1-30 (or 31)
D = 1-365
特别是“从‘A’到‘Z’以及从‘A’到‘Z’的无引号字母被解释为模式字母”。“Y”不是允许的模式。
M = month
m = minute
d = 1-30 (or 31)
D = 1-365