Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不使用日历从当前日期减去两天_Java_Date - Fatal编程技术网

Java 不使用日历从当前日期减去两天

Java 不使用日历从当前日期减去两天,java,date,Java,Date,我可以打印当前日期 如何使用date对象从当前日期中减去2天。无论之前在本网站中提出的问题与我的要求不符。如果我使用Calendar,那么我会得到不同格式的日期。我只希望使用date对象使用yyyyMMdd格式的日期。我尝试了这个方法,但遇到了如下错误 未为参数类型字符串int定义运算符。 帮我解决这个问题 Date date = new Date(); DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); System.out.pr

我可以打印当前日期 如何使用date对象从当前日期中减去2天。无论之前在本网站中提出的问题与我的要求不符。如果我使用Calendar,那么我会得到不同格式的日期。我只希望使用date对象使用yyyyMMdd格式的日期。我尝试了这个方法,但遇到了如下错误 未为参数类型字符串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));

你可能想调查一下 . 在Java中处理日期要容易得多

DateTime dateTime = new DateTime(date);
dateTime = dateTime.minusDays(2);
以下是如何设置Joda时间的格式:

编辑: 根据定义,dateFormat.format(date))返回一个字符串。因此,您得到的编译错误-无法从字符串中扣除int。这就是为什么我建议您熟悉Joda time

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


您可以使用
Calendar
,只需按照说明计算差异,然后调用
dateFormat.format(Calendar.getTime())
@Hugo,我编写的代码如下:Date=new Date();DateFormat DateFormat=新的SimpleDateFormat(“yyyyMMdd”);Calendar cal=Calendar.getInstance();//cal.setTime(dateInstance);cal.add(Calendar.DATE,-2);Date dateBefore2Days=dateFormat.format(cal.getTime())@Hugo,我遇到了一个错误,例如类型不匹配无法从字符串转换为日期
dateFormat.format()
返回一个
字符串,而不是
日期
。您应该执行
dateBefore2Days=cal.getTime()
。然后,如果要将
日期
格式化为
字符串
,可以调用
dateFormat.format(dateBefore2Days)
<代码>日期和字符串是不同的。一个
Date
,而
format()
方法返回的
String
以特定的格式表示日期。虽然是一个很棒的API(我用了很多,非常喜欢),但Joda Time处于维护模式,正在被新的API所取代,所以我不建议用它启动一个新的项目。甚至在文章中也提到:“请注意,Joda Time被认为是一个基本上“完成”的项目。没有计划进行重大的增强。如果使用Java SE 8,请迁移到Java.Time(JSR-310)。”。在Java8中有,在JDK6和7中有。@usha如果这解决了您的问题,请单击旁边的复选标记将其标记为正确答案。谢谢
 Date dateBefore = new Date(date.getTime() - (2 * 24 * 3600 * 1000));