使用Joda时间库格式化日期

时间:2012-05-31 11:26:37

标签: java datetime jodatime

在java类中,我从mm / dd / yyyy中的datepicker-input表单中获取日期字符串“updateDate”。

当我尝试使用joda时间库更新代码时

DateTime expireDate = new DateTime(renewDate);
// i get error at above line
updateOrganization.setRenewdate(expireDate.toDate());
organizationDAO.update(updateOrganization);

但如果我在格式中格式化日期,即从mm / dd / yyyy到yyyy-mm-dd并将其发送到java类,它的工作正常。

如何在Java类中将日期格式从mm / dd / yy格式化为yyyy-mm-dd。输入是Stringformat。

2 个答案:

答案 0 :(得分:15)

javadoc of ISODateTimeFormat详细介绍了您正在使用的构造函数的有效格式列表,其中不包含“mm / dd / yyyy”:

  

datetime = time |日期选择时间
   time ='T'time-element [offset]
   date-opt-time = date-element ['T'[time-element] [offset]]
   date-element = std-date-element | ord-date-element |本周最新元素
   std-date-element = yyyy [' - 'MM [' - 'dd]]
   ord-date-element = yyyy [' - 'DDD]
   week-date-element = xxxx'-W'ww [' - 'e]
   time-element = HH [minute-element] | [分数]
   minute-element =':'mm [second-element] | [分数]
   second-element =':'ss [fraction]
   分数=('。'|',')数字+
   offset ='Z'| (('+'|' - ')HH [':'mm [':'ss [('。'|',')SSS]]])

您可以使用DateTimeFormatter解析不同的格式(请注意月份的大写字母MM):

DateTimeFormatter fmt = DateTimeFormat.forPattern("MM/dd/yyyy");
DateTime expireDate = fmt.parseDateTime(renewDate);

答案 1 :(得分:2)

您需要使用静态方法parse解析日期,因为构造函数假定String是ISO格式

您需要的日期格式如下

DateTimeFormatter fmt = DateTimeFormat.forPattern("MM/dd/yyyy");
DateTime expireDate = DateTime.parse( renewDate, fmt );