5

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

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

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

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

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

4

2 回答 2

15

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

日期时间 = 时间 | 日期选择时间
时间 = 'T' 时间元素 [偏移量]
日期选择时间 = 日期元素 ['T' [时间元素] [偏移量]]
日期元素 = 标准日期元素 | 排序日期元素 | 星期日期元素
标准日期元素 = yyyy ['-' MM ['-' dd]]
ord-日期元素 = yyyy ['-' DDD]
星期日期元素 = xxxx '-W' ww [ '-' e]
时间元素 = HH [分钟元素] | [分数]
min-element = ':' mm [second-element] | [分数]
第二元素 = ':' ss [分数]
分数 = ('.' | ',') 数字+
偏移量 = 'Z' | (('+' | '-') HH [':

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

DateTimeFormatter fmt = DateTimeFormat.forPattern("MM/dd/yyyy");
DateTime expireDate = fmt.parseDateTime(renewDate);
于 2012-05-31T11:30:42.263 回答
2

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

您需要的日期格式如下

DateTimeFormatter fmt = DateTimeFormat.forPattern("MM/dd/yyyy");
DateTime expireDate = DateTime.parse( renewDate, fmt );
于 2012-05-31T11:32:06.127 回答