只有一个表达式来获取昨天的日期和月的第一天

chu*_*hun 5 java date

我使用的报告工具只支持一行表达式

举个例子,我想得到昨天的日期

Calendar类有一个add方法,但它返回void

Calendar.getInstance().add(Calendar.DAY_OF_MONTH,-1).getTime()
Run Code Online (Sandbox Code Playgroud)

没用

不知道怎么做到这一点

谢谢

jar*_*bjo 3

如果它确实必须是一行代码并且代码是否可以理解并不重要,我认为以下语句应该有效:

Date yesterday = new SimpleDateFormat("yyyyMMdd").parse(
    ""+(Integer.parseInt(new SimpleDateFormat("yyyyMMdd").format(new Date()))-1));
Run Code Online (Sandbox Code Playgroud)

它将当前日期格式化为“yyyyMMdd”,例如今天的“20100812”,将其解析为 int:20100812,减去一:20100811,然后使用之前的格式解析日期“20100811”。如果今天是一个月的第一天,它也将起作用,因为一个月的 0 号被宽松的 DateFormat 解析为上个月的最后一天。

格式“yyyyDDD”也应该有效(D 是一年中的某一天)。

对于当月的第一天,您可以使用类似的技巧:

Date firstday = new SimpleDateFormat("yyyyMMdd").parse(
    new SimpleDateFormat("yyyyMM").format(new Date())+"01");
Run Code Online (Sandbox Code Playgroud)