我正在使用SimpleDateFormat将日期从dd-MM-yyyy转换为yyyy-MM-dd 但我没有正确显示年份。我正在尝试将18-5-2014转换为2014-05-18 但我得到了3914-05-18。
public void onDateSet(DatePicker view, int year,int monthOfYear, int dayOfMonth)
{
Date selectedDate = new Date(year,monthOfYear, dayOfMonth);
String strDate = null;
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd");
strDate = dateFormatter.format(selectedDate);
txtdeliverydate.setText(strDate);
}
答案 0 :(得分:2)
我怀疑您没有阅读您正在使用的(deprecated) Date
constructor的文档:
<强>参数:强>
年 - 减去1900年 月份 - 0-11之间的月份 date - 1-31之间的月份。
避免在此使用Date
。要么像Joda Time一样使用好的日期/时间库,要么使用Calendar
来设置年/月/日值 - 即使这样,月份也会从0开始。
此外,您的方法目前接受年/月/日值...如果您实际上只是尝试进行转换,则应该接受字符串并返回字符串,例如
public static String convertDateFormat(String text) {
TimeZone utc = TimeZone.getTimeZone("Etc/UTC");
SimpleDateFormat parser = new SimpleDateFormat("dd-MM-yyyy", Locale.US);
parser.setTimeZone(utc);
Date date = parser.parse(text);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
formatter.setTimeZone(utc);
return formatter.format(date);
}