2017-10-05 130 views
-1

我可以打印当前日期 如何使用日期对象从当前日期减去2天。本网站提出的任何问题与我的要求不符。如果我使用日历,然后我得到不同的日期格式。我只想使用日期对象在yyyyMMdd中使用日期格式。我试过这个,但是我得到的错误如 运算符 - 未定义为参数类型(s)String,int。 帮助我如何解决这个问题。从当前日期减去两天而不使用日历

Date date = new Date(); 
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); 
System.out.println("date is "+dateFormat.format(date)); 
Date dateBefore = new Date(dateFormat.format(date)) - (2 * 24 * 3600 * 1000)); 
+0

可以使用'Calendar',只是计算方式为解释[这里](HTTPS的区别做到这一点:// stackoverflow.com/questions/11882926/how-to-subtract-x-day-from-a-date-object-in-java),然后调用'dateFormat.format(calendar.getTime())' – 2017-10-05 17:32:09

+0

[您的代码确实不会生成那个编译错误。](https://ideone.com/NjS9vq) –

+0

@Hugo,我写了这样的代码Date date = new Date(); \t DateFormat dateFormat = new SimpleDateFormat(“yyyyMMdd”); \t日历cal = Calendar.getInstance(); \t //cal.setTime (dateInstance); \t cal.add(Calendar.DATE,-2); \t日期dateBefore2Days = dateFormat.format(cal.getTime()); – usha

回答

0

你可能想看看 Joda-time。在Java中处理日期要容易得多。

DateTime dateTime = new DateTime(date); 
dateTime = dateTime.minusDays(2); 

这里是如何格式化乔达时间:example

编辑: 根据定义,dateFormat.format(日期))返回一个字符串。因此,你得到的编译错误 - 不能从String中扣除int。这就是为什么我会建议在熟悉了乔达时

+0

虽然一个伟大的API(我用了很多,并且非常喜欢它),但Joda-Time处于维护模式并且正在被新的API取代,所以我没有推荐使用它开始一个新项目。即使在[joda的网站](http://www.joda.org/joda-time)中,它表示:**“请注意,Joda-Time被认为是一个大部分”完成“的项目,没有计划进行重大改进。使用Java SE 8,请迁移到java.time(JSR-310)。“**。 在Java 8中,有[new java.time API](https://docs.oracle.com/javase/tutorial/datetime),而在JDK 6和7中,[ThreeTen Backport](http:// www .threeten.org/threetenbp)。 – 2017-10-05 17:51:35

0

使用date.getTime(),而不是dateFormat.format(date)

Date dateBefore = new Date(date.getTime() - (2 * 24 * 3600 * 1000)); 
+0

感谢您的投入......现在工作正常 – usha

+0

@usha如果这样可以解决您的问题,请点击旁边的复选标记将其标记为正确答案。谢谢! – dspano