【发布时间】:2019-01-29 20:55:24
【问题描述】:
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.DateFormat;
import groovy.time.TimeCategory
def startDate = 'Monday, May 11 2015'
def today = new Date().format( 'EEEE, MMM dd yyyy' )
def today1 = quantityService.normalizeAndFormat(today, DatumType.DATE,
Formatters.DATE_IN_WORDS)
def diff = today1.minus(startDate);
startDate 是从数据库中提取的字符串。并且格式与 today1 的格式完全相同,以生成“2015 年 5 月 11 日星期一”。我无法执行减法运算来获得变量 diff 的值。您能否指导我如何以与 startDate 相同的格式获取 diff 的值?目前,该操作不起作用可能是因为 startDate 是一个字符串,而 today1 是一个日期对象。
【问题讨论】:
-
检查格式字符串中format letters的大小写。
E= 星期 (good) 中的日期名称,M= 年份中的月份 (good),D= 年份中的日期 (错误!),Y= 周年 (错误!) -
你认为
String.minus(String)是什么意思,为什么你认为甚至有一种方法呢? --- 你认为两个日期相减的值是多少,为什么你认为这个值可以像日期一样格式化? -
那么你为什么要从字符串中减去字符串呢?您不知道如何将字符串解析为日期对象吗? 那是你的问题吗?
-
如果您试图找出两个日期之间的时间长度(例如,之间的天数),
java.timeAPI 对此有很好的支持,我会假设Groovy 可以访问它。java.util.Date不应在新代码中使用。 -
正如@DavidConrad 所说(或可能有意),
Date类设计不佳且早已过时。使用 JDBC 4.2 或更高版本(您可能是),您可以直接从数据库中获取LocalDate。然后使用ChronoUnit查找日期之间的差异。提到的两个类都来自java.time, the modern Java date and time API。
标签: java string date object groovy