SimpleDateFormat的日期转换不正确

时间:2014-05-18 13:17:06

标签: android

我正在使用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);

  }

1 个答案:

答案 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);
}