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