从Java中的Calendar解析日期

Vis*_*hal 4 java parsing calendar date

我有以下功能

public static Date parseDate(String date, String format) throws ParseException
 {
         SimpleDateFormat formatter = new SimpleDateFormat(format);
         return formatter.parse(date);
 }
Run Code Online (Sandbox Code Playgroud)

我在我的代码中使用如下

Calendar eDate = Calendar.getInstance();
eDate.add(Calendar.DAY_OF_MONTH,10);
Date date = null;
  try {
   date = parseDate(eDate.getTime().toString(),"yyyy-MM-dd hh-mm-ss");
  } catch (ParseException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
Run Code Online (Sandbox Code Playgroud)

但它正在投掷 -

 java.text.ParseException: Unparseable date
Run Code Online (Sandbox Code Playgroud)

这里有什么问题?

Bal*_*usC 13

格式不存储在Date.它存储在String.所述Date#toString()返回一个固定其以其格式描述的Javadoc.

您需要将Date人物显示为a 时才进行格式化String.

Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, 10);
Date date = calendar.getTime();
String formattedDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
System.out.println(formattedDate);
Run Code Online (Sandbox Code Playgroud)

请注意,MM代表数月和mm分钟.另见SimpleDateFormatjavadoc.


Car*_*icz 5

你会很高兴听到从来没有必要从一个Calendar对象解析一个日期:通过该方法拉出一个Date日期CalendargetTime()方法.


编辑:

eDateISO样式格式输出日期:

final DateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
String formattedDate = isoFormat.format(eDate.getTime());
Run Code Online (Sandbox Code Playgroud)

这是未经测试的,但我认为它应该有效.