格式化Calendar对象时出现非法参数异常

时间:2014-09-30 03:30:51

标签: java android calendar simpledateformat

我有一个日历对象,我希望以这种格式显示它:“year.month.day hour.min.sec TimeZone”

我编写了以下代码行,但最后一行抛出了IllegalArgumentException。

我不知道我的问题在哪里。任何建议将不胜感激。感谢。

Calendar date = Calendar.getInstance(TimeZone.getDefault());
SimpleDateFormat formatter = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss Z");
String bookingDate = formatter.format(date);

==========

更新

==========

日志:

> 09-30 11:19:47.205: E/AndroidRuntime(19285): FATAL EXCEPTION: main
> 09-30 11:19:47.205: E/AndroidRuntime(19285): Process:
> com.passenger, PID: 19285 09-30 11:19:47.205:
> E/AndroidRuntime(19285): java.lang.IllegalArgumentException: Bad
> class: class java.util.GregorianCalendar 09-30 11:19:47.205:
> E/AndroidRuntime(19285):  at
> java.text.DateFormat.format(DateFormat.java:296) 09-30 11:19:47.205:
> E/AndroidRuntime(19285):  at java.text.Format.format(Format.java:93)
> 09-30 11:19:47.205: E/AndroidRuntime(19285):  at
> com.fragment.bookingdetail.BookingDetailFragment.sendDataToAP(BookingDetailFragment.java:1105)
> 09-30 11:19:47.205: E/AndroidRuntime(19285):  at
> com.fragment.bookingdetail.BookingDetailFragment.sendBookingToServer(BookingDetailFragment.java:782)
> 09-30 11:19:47.205: E/AndroidRuntime(19285):  at
> com.fragment.bookingdetail.BookingDetailFragment.onClick(BookingDetailFragment.java:340)

2 个答案:

答案 0 :(得分:2)

基本上,您无法使用Calendar格式化DateFormat对象。使用Calendar#getTime()并将生成的Date对象传递给format来电。

答案 1 :(得分:0)

试试这个

Calendar date = Calendar.getInstance(TimeZone.getDefault());
SimpleDateFormat formatter = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss Z", Locale.ENGLISH);
String bookingDate = formatter.format(date.getTime());
System.out.println(bookingDate);