【发布时间】:2014-07-31 21:54:27
【问题描述】:
我有一个 Excel 电子表格,其中日期是这样写的:2012 年 6 月 10 日。现在,Grails 正在使用 excel 导入插件读取它们,当我要求它打印它们时,它会将它们打印为:2012-06-10。日期以地图的形式出现在我的服务中,例如
map: [name: name, date: date, price: price]
我尝试过:
Date date = Date(map.date)
当然我得到了一个错误。
2012-06-10
ERROR: Record could not be saved!
org.grails.datastore.mapping.validation.ValidationErrors: 2 errors
Field error in object 'com.twc.fatcaone.Record' on field 'date': rejected value [null]; codes [com.twc.fatcaone.Record.date.nullable.error.com.twc.fatcaone.Record.date,com.twc.fatcaone.Record.da
我看到一些 java.util.Date 构造函数已被弃用,所以我对使用它们犹豫不决,但我也想知道解析到地图中以获取日期并从中形成 Date 对象的最干净的方法是什么?
【问题讨论】:
-
Date.parse( 'MM/dd/yyyy', map.date )? -
@dmahapatro 感谢您的回复。我尝试过,以及'yyyy-dd-MM',但在这两种情况下我都得到了这个:错误| 2014-06-10 20:57:15,629 [http-bio-8080-exec-9] 错误错误。GrailsExceptionResolver - 处理请求时发生 MissingMethodException:[POST] /FatcaOne_0/customer/upload 没有方法签名:静态 java.util .Date.parse() 适用于参数类型:(java.lang.String, org.joda.time.LocalDate) 值:[yyyy-MM-dd, 2012-06-10]
-
第一个参数必须是字符串格式,第二个参数必须是字符串日期。由于您使用的是 Joda 时间,因此
LocalDate上的toDate()应该足够了。map.date.toDate()应该给出java.util.Date,不再需要解析。否则,如果您仍想使用Date.parse,那么第二个参数必须是map.date.toString()中的字符串。希望对您有所帮助。 -
是的,完全正确。我使用了 toDate() 并且不再需要解析。谢谢。
-
@dmahapatro 发表您的评论作为答案,以便解决这个问题。