java只有一个表达式来获取昨天的日期和月份的第一天
我使用的报告工具只支持一行表达式
举个例子,我想知道昨天的日期
类Calendar有一个add方法,但它返回void so
Calendar.getInstance().add(Calendar.DAY_OF_MONTH,-1).getTime()
没用
我不知道该怎么做
谢谢
你可以在下面搜索框中键入要查询的问题!
我使用的报告工具只支持一行表达式
举个例子,我想知道昨天的日期
类Calendar有一个add方法,但它返回void so
Calendar.getInstance().add(Calendar.DAY_OF_MONTH,-1).getTime()
没用
我不知道该怎么做
谢谢
# 1 楼答案
假设您想要一个
java.util.Date
对象(因为您在问题中使用了getTime()
,并且返回了java.util.Date
),您可以执行以下操作:哦,之前没有看到您的每月第一天查询。我用
util.Date
得出了以下结论,但我认为现在是你想改用Joda
或Calendar
的时候了。。。(亲爱的,所以,请不要因为以下可怕的事情而投票否决我……)# 2 楼答案
应按以下步骤进行:
当你这样做的时候:
实际上,您是在请求一个返回void的方法(
add()
)来运行.getTime()
。那不行# 3 楼答案
使用Joda-Time:
# 4 楼答案
这是我在JasperReports中使用的:
我更喜欢使用ISO格式
YYYY-MM-DD
,因为它在任何地方都能被识别,并且避免了区域格式的混淆(日期字段上的位置是dd/mm
)# 5 楼答案
如果它真的必须是一行代码,并且代码是否可以理解并不重要,我认为下面的语句应该有效:
它将当前日期格式化为“yyyyMMdd”,例如今天的“20100812”,将其解析为int:20100812,减去1:20100811,然后使用之前的格式解析日期“20100811”。如果今天是一个月的第一天,它也会起作用,因为一个月的第0天被宽松的DateFormat解析为上个月的最后一天
格式“yyyyDDD”也应该适用(D是一年中的一天)
对于当月的第一天,您可以使用类似的技巧:
# 6 楼答案
你就不能这样做吗
要获取当前时间,请减去一天中的#毫秒,然后从中构建一个新的日期对象