我有以下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
大家请告知这是我的预期结果是不正确的,按照美国格式
答案 0 :(得分:1)
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" };