Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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检索年份格式 因此,如果给我mmddyyy,我想提取yyy。 如果给我mmddyy,我想提取yy 我找不到使用SimpleDateFormat、Date、Calendar等类获取该信息的方法。需要注意的是,“年格式”的概念只适用于SimpleDateFormat。(无论如何,在默认的JDK中。)更具体地说,SimpleDataFormat是JDK提供的唯一DateFormat实现,它使用了“格式字符串”的概念,您可以从中提取年份格式;其他实现使用从日期到

我有一个本地化的日期格式。我只想用Java检索年份格式

因此,如果给我mmddyyy,我想提取yyy。 如果给我mmddyy,我想提取yy


我找不到使用SimpleDateFormat、Date、Calendar等类获取该信息的方法。

需要注意的是,“年格式”的概念只适用于
SimpleDateFormat
。(无论如何,在默认的JDK中。)更具体地说,
SimpleDataFormat
是JDK提供的唯一
DateFormat
实现,它使用了“格式字符串”的概念,您可以从中提取年份格式;其他实现使用从
日期
字符串
的更不透明的映射。因此,您所要求的只是在
SimpleDataFormat
类上定义良好(同样,在股票JDK中提供的
DateFormat
实现中)

但是,如果您使用的是
SimpleDataFormat
,则可以使用正则表达式提取年份格式:

SimpleDateFormat df=(something);
final Pattern YEAR_PATTERN=Pattern.compile("^(?:[^y']+|'(?:[^']|'')*')*(y+)");
Matcher m=YEAR_PATTERN.matcher(df.toPattern());
String yearFormat=m.find() ? m.group(1) : null;
// If yearFormat!=null, then it contains the FIRST year format. Otherwise, there is no year format in this SimpleDateFormat.
正则表达式看起来很奇怪,因为它必须忽略日期格式字符串的“奇特”引用部分中出现的任何y,例如
“'今天的日期是'yyy-MM-dd'
”。根据上面代码中的注释,请注意,这只提取第一年格式。如果需要提取多种格式,只需稍微不同地使用
匹配器即可:

SimpleDateFormat df=(something);
final Pattern YEAR_PATTERN=Pattern.compile("\\G(?:[^y']+|'(?:[^']|'')*')*(y+)");
Matcher m=YEAR_PATTERN.matcher(df.toPattern());
int count=0;
while(m.find()) {
    String yearFormat=m.group(1);
    // Here, yearFormat contains the count-th year format
    count = count+1;
}

日期字符串“01/02/03”中的年份是什么?看,我应该总是得到一个简单的表格。这就是我编写的代码SimpleDateFormat df=newsimpledateformat(“mmddyyy”);最终模式年\u Pattern=Pattern.compile(“y+”);MatchResult m=YEAR_PATTERN.matcher(df.toPattern()).toMatchResult();字符串格式;如果(m!=null)yearFormat=m.group();else yearFormat=“空”;System.out.println(“年份模式为===>”+yearFormat);我在线程“main”java.lang.IllegalStateException中遇到异常:找不到匹配项,对此表示抱歉。尝试更新的代码。和往常一样,细节中有魔鬼谢谢你这么及时的答复