我想在一个特定的日期上加上一天。我该怎么做呢?
Date dt = new Date();
现在我想在这个日期上加一天。
我想在一个特定的日期上加上一天。我该怎么做呢?
Date dt = new Date();
现在我想在这个日期上加一天。
当前回答
java8时间API:
Instant now = Instant.now(); //current date
Instant after= now.plus(Duration.ofDays(300));
Date dateAfter = Date.from(after);
其他回答
给定一个Date dt,你有几种可能性:
解决方案1:你可以使用Calendar类:
Date dt = new Date();
Calendar c = Calendar.getInstance();
c.setTime(dt);
c.add(Calendar.DATE, 1);
dt = c.getTime();
解决方案2:您应该认真考虑使用Joda-Time库,因为Date类存在各种缺点。使用Joda-Time你可以做以下事情:
Date dt = new Date();
DateTime dtOrg = new DateTime(dt);
DateTime dtPlusOne = dtOrg.plusDays(1);
解决方案3:在Java 8中,你还可以使用新的JSR 310 API(它的灵感来自Joda-Time):
Date dt = new Date();
LocalDateTime.from(dt.toInstant()).plusDays(1);
最佳用法:
long currenTime = System.currentTimeMillis();
long oneHourLater = currentTime + TimeUnit.HOURS.toMillis(1l);
类似地,你可以添加月、日、分钟等
为了使它与java无关,基本原则是转换为某种线性日期格式,儒略日、修改的儒略日、从某个纪元开始的秒等,添加您的日期,然后转换回来。
这样做的原因是,您可以将“正确处理闰日、闰秒等”的问题外包给那些运气好的人,他们没有把这个问题搞砸。
我要提醒您,正确使用这些转换例程可能很困难。人们搞砸时间的方式多得惊人,最近一个高调的例子是微软的Zune。不要取笑MS,因为它很容易搞砸。即使有多种不同的时间格式,比如TAI和TT,也无济于事。
在非常特殊的情况下,如果你要求做自己的约会课,可能是你的计算机编程教授;这个方法会做得很好。
public void addOneDay(){
int [] months = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
day++;
if (day> months[month-1]){
month++;
day = 1;
if (month > 12){
year++;
month = 1;
}
}
}
这将使任何日期加1
String untildate="2011-10-08";//can take any date in current format
SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd" );
Calendar cal = Calendar.getInstance();
cal.setTime( dateFormat.parse(untildate));
cal.add( Calendar.DATE, 1 );
String convertedDate=dateFormat.format(cal.getTime());
System.out.println("Date increase by one.."+convertedDate);