我有下面的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/