gpt4 book ai didi

java - 无法在java中解析美国格式的日期

转载 作者:行者123 更新时间:2023-12-01 09:55:50 26 4
gpt4 key购买 nike

我有下面的java程序,您可以在其中指定要转换日期的格式的参数,即是否要将其转换为美国或英国格式。

现在的问题是,当我希望日期按照美国格式进行格式化时,它没有这样做,请求您告知此格式中缺少什么,下面是我尝试转换时存在的程序和输出美国格式

import java.text.ParseException;
import java.text.SimpleDateFormat;
import org.apache.commons.lang.time.DateUtils;


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

System.out.println ("01-Mar-2016-->" + extractDate("01-Mar-2016", "US") );

}




public static java.util.Date extractDate(String dateStr, String dateType) {

java.util.Date date = null;


if (!dateStr.matches("\\d{4}-\\d{2}-\\d{2}")){

String[] datePatternsOfUk = { "d-M-yy", "d-M-yyyy", "d/M/yy", "d/M/yyyy", "yyyy-MM-dd","dd-MM-yy", "dd-MMM-yy","dd-MMM-yyyy","dd-MM-yyyy",
"dd/MM/yy","dd/MMM/yy","dd/MMM/yyyy"};
String[] datePatternsOfUs = { "M-d-yy","MM-dd-yy","M/d/yy","MM/dd/yy", "MM/dd/yy", "MMM-dd-yy",
"MMM/dd/yy", "MMM-dd-yyyy", "MM-dd-yyyy", "MMM/dd/yyyy",
"MM/dd/yyyy" };
String[] datePatterns = datePatternsOfUk;

try {
if (dateType.equals("US")) {
datePatterns = datePatternsOfUs;
} else if (dateType.equals("UK")) {
datePatterns = datePatternsOfUk;
}
int p = dateStr.lastIndexOf("/");
if (p == -1) {
p = dateStr.lastIndexOf("-");
}
String firstSubstring = dateStr.substring(0, p + 1);
String secondSubstring = dateStr.substring(p + 1);
if (p != -1 && secondSubstring.length() <= 2) {
secondSubstring = Integer.toString(2000 + Integer.parseInt(secondSubstring));
dateStr = firstSubstring + secondSubstring;
}

date = DateUtils.parseDate(dateStr, datePatterns);
} catch (ParseException e) {


}
return date;
}



if (dateStr.matches("\\d{4}-\\d{2}-\\d{2}")){
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String convertedCurrentDate =sdf.format(sdf.parse(dateStr));

date=sdf.parse(convertedCurrentDate);
} catch (ParseException e) {


}
return date;
}
return null;
}

}

我得到的美国格式的输出如下所示..

01-Mar-2016-->null

实际上,在美国格式中,我希望日期显示为

01-Mar-2016--> 3-Jan-2016

各位,请告知,这是我的预期结果与美国格式不正确

最佳答案

01-Mar-2016 不是您为美国定义的格式。将dd-MMM-yyyy添加到datePatternsOfUs,例如

String[] datePatternsOfUs = { "M-d-yy","MM-dd-yy","M/d/yy","MM/dd/yy",
"MM/dd/yy", "MMM-dd-yy", "MMM/dd/yy", "MMM-dd-yyyy",
"MM-dd-yyyy", "MMM/dd/yyyy", "MM/dd/yyyy", "dd-MMM-yyyy" };

关于java - 无法在java中解析美国格式的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37234719/

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