在Java中如何将日期增加一天?
我正在使用以下格式的日期:在Java中如何将日期增加一天?,java,date,Java,Date,我正在使用以下格式的日期:yyyy-mm-dd 如何将该日期增加一天?构造一个日历对象并使用add(Calendar.date,1)方法 使用API将字符串转换为日期对象,然后使用API添加一天。如果您需要特定的代码示例,请告诉我,我可以更新我的答案。类似这样的方法应该可以: SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd" ); Calendar cal = Calendar.getInstance(); cal.
yyyy-mm-dd
如何将该日期增加一天?构造一个日历对象并使用add(Calendar.date,1)方法 使用API将字符串转换为日期对象,然后使用API添加一天。如果您需要特定的代码示例,请告诉我,我可以更新我的答案。类似这样的方法应该可以:
SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd" );
Calendar cal = Calendar.getInstance();
cal.setTime( dateFormat.parse( inputString ) );
cal.add( Calendar.DATE, 1 );
String dt = "2008-01-01"; // Start date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.setTime(sdf.parse(dt));
c.add(Calendar.DATE, 1); // number of days to add
dt = sdf.format(c.getTime()); // dt is now the new date
看看Joda Time()
请注意,此行增加了24小时:
d1.getTime() + 1 * 24 * 60 * 60 * 1000
但这一行增加了一天
cal.add( Calendar.DATE, 1 );
在有夏令时变化的日子里(25或23小时),你会得到不同的结果 UPDATE(2021年5月):这对于古老的Java来说是一个非常过时的答案。对于Java8及以上版本,请参见
与C#相比,Java看起来确实落后于8球。此实用程序方法显示了在JavaSE6中使用的方法(可能是唯一简单的方法)
若要添加一天,请根据所问问题,按如下方式调用:
String sourceDate = "2012-02-29";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date myDate = format.parse(sourceDate);
myDate = DateUtil.addDays(myDate, 1);
我更喜欢使用Apache中的DateUtils。看看这个。它非常方便,尤其是当您必须在项目中的多个位置使用它,并且不想为此编写一行程序方法时 API说: addDays(Date-Date,int-amount):将天数添加到返回新对象的日期
请注意,它会返回一个新的日期对象,并且不会对上一个对象本身进行更改。Apache Commons已经有了这个DateUtils.addDays(Date-Date,int-amount),您可以使用它,也可以使用JodaTime使它更干净
Date newDate = new Date();
newDate.setDate(newDate.getDate()+1);
System.out.println(newDate);
Date today = new Date();
SimpleDateFormat formattedDate = new SimpleDateFormat("yyyyMMdd");
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, 1); // number of days to add
String tomorrow = (String)(formattedDate.format(c.getTime()));
System.out.println("Tomorrows date is " + tomorrow);
这将给出明天的日期c.add(…)
可以将参数从1更改为另一个数字,以获得适当的增量。java.time
在Java8和更高版本上,使这几乎是自动化的。()
假设字符串
输入和输出:
import java.time.LocalDate;
public class DateIncrementer {
static public String addOneDay(String date) {
return LocalDate.parse(date).plusDays(1).toString();
}
}
Java8添加了一个用于处理日期和时间的新API 使用Java 8,您可以使用以下代码行:
// parse date from yyyy-mm-dd pattern
LocalDate januaryFirst = LocalDate.parse("2014-01-01");
// add one day
LocalDate januarySecond = januaryFirst.plusDays(1);
只需在字符串中传递日期和接下来的天数
private String getNextDate(String givenDate,int noOfDays) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
String nextDaysDate = null;
try {
cal.setTime(dateFormat.parse(givenDate));
cal.add(Calendar.DATE, noOfDays);
nextDaysDate = dateFormat.format(cal.getTime());
} catch (ParseException ex) {
Logger.getLogger(GR_TravelRepublic.class.getName()).log(Level.SEVERE, null, ex);
}finally{
dateFormat = null;
cal = null;
}
return nextDaysDate;
}
这将从oldDate获取自历元以来的毫秒数,并添加1天的毫秒数,然后使用Date()公共构造函数使用新值创建日期。此方法允许您添加1天或任意小时/分钟数,而不仅仅是整天。如果您希望添加单个时间单位,并且希望其他字段也会增加,则可以安全地使用add方法。见下例:
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.set(1970,Calendar.DECEMBER,31);
System.out.println(simpleDateFormat1.format(cal.getTime()));
cal.add(Calendar.DATE, 1);
System.out.println(simpleDateFormat1.format(cal.getTime()));
cal.add(Calendar.DATE, -1);
System.out.println(simpleDateFormat1.format(cal.getTime()));
将打印:
1970-12-31
1971-01-01
1970-12-31
您可以使用简单的java.util库
Calendar cal = Calendar.getInstance();
cal.setTime(yourDate);
cal.add(Calendar.DATE, 1);
yourDate = cal.getTime();
在Java8中,您可以使用
java.time.LocalDate
LocalDate parsedDate = LocalDate.parse("2015-10-30"); //Parse date from String
LocalDate addedDate = parsedDate.plusDays(1); //Add one to the day field
您可以在中转换为java.util.Date
对象,如下所示
Date date = Date.from(addedDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
String str = addedDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
您可以将LocalDate
格式化为如下字符串
Date date = Date.from(addedDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
String str = addedDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
如果您使用的是Java8,
Java.time.LocalDate
和Java.time.format.DateTimeFormatter
可以使这项工作非常简单
public String nextDate(String date){
LocalDate parsedDate = LocalDate.parse(date);
LocalDate addedDate = parsedDate.plusDays(1);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-mm-dd");
return addedDate.format(formatter);
}
因为Java1.5在我看来更干净
SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd" );
Date day = dateFormat.parse(string);
// add the day
Date dayAfter = new Date(day.getTime() + TimeUnit.DAYS.toMillis(1));
如果您使用的是Java8,那么就这样做
LocalDate sourceDate = LocalDate.of(2017, Month.MAY, 27); // Source Date
LocalDate destDate = sourceDate.plusDays(1); // Adding a day to source date.
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // Setting date format
String destDate = destDate.format(formatter)); // End date
String sourceDate = "2017-05-27"; // Start date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.setTime(sdf.parse(sourceDate)); // parsed date and setting to calendar
calendar.add(Calendar.DATE, 1); // number of days to add
String destDate = sdf.format(calendar.getTime()); // End date
如果要使用SimpleDataFormat,请按如下方式操作
LocalDate sourceDate = LocalDate.of(2017, Month.MAY, 27); // Source Date
LocalDate destDate = sourceDate.plusDays(1); // Adding a day to source date.
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // Setting date format
String destDate = destDate.format(formatter)); // End date
String sourceDate = "2017-05-27"; // Start date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.setTime(sdf.parse(sourceDate)); // parsed date and setting to calendar
calendar.add(Calendar.DATE, 1); // number of days to add
String destDate = sdf.format(calendar.getTime()); // End date
这很简单,试着用一个简单的词来解释。 获取今天的日期,如下所示
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime());// print today's date
calendar.add(Calendar.DATE, 1);
现在,通过calendar.add方法将此日期提前一天设置为(常量,值)。这里的常量可以是日期、小时、分钟、秒等,value是常量的值。和一天一样,提前常数是Calendar.DATE,它的值是1,因为我们需要提前一天的值
System.out.println(calendar.getTime());//打印明天的修改日期
谢谢您可以从“org.apache.commons.lang3.time”使用此软件包:
在Java 8中,简单的方法是:
Date.from(Instant.now().plusSeconds(SECONDS_PER_DAY))
让我们澄清一下用例:您希望执行日历算术,并以 一些方法:
System.currentTimeMillis()
从系统中获取以毫秒为单位的当前时间,然后
添加84000000毫秒,并使用Date
类为毫秒生成日期格式
范例
String Today=新日期(System.currentTimeMillis()).toString()代码>
今天的字符串将是2019-05-9
String Tommorow=新日期(System.currentTimeMillis()+86400000.toString()代码>
字符串Tommorow将于2019-05-10
String dayAftertomorow=新日期(System.currentTimeMillis()+(2*86400000)).toString()代码>
使用Java SE 8或更高版本时,字符串DayAfterMoRow将为2019-05-11
如果需要从java.util.Date
转换为java.time.LocalDate
,可以使用此方法
public LocalDate asLocalDate(Date date) {
Instant instant = date.toInstant();
ZonedDateTime zdt = instant.atZone(ZoneId.systemDefault());
return zdt.toLocalDate();
}
对于JavaSE8之前的版本,您可以使用
Joda Time提供了Java日期和时间的高质量替换
类,并且是Java事实上的标准日期和时间库
JavaSE8之前的版本
尝试以下方法:
public static Date addDay(int day) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.add(Calendar.DATE, day);
return calendar.getTime();
}
我认为最快的一个,永远不会被反对,它是一个去核心
let d=new Date();
d.setTime(d.getTime()+86400000);
console.log(d);
只是一句话,
只有两个命令。
它使用日期类型,不使用日历
我一直认为最好在代码端使用unix times,并在准备好向用户显示的时候显示日期
要打印日期d,我使用
let format1 = new Intl.DateTimeFormat('en', { year: 'numeric', month: 'numeric', month: '2-digit', day: '2-digit'});
let [{ value: month },,{ value: day },,{ value: year }] = format1.formatToParts(d);
它设置变量的月份、年份和日期,但可以扩展到小时、分钟和秒,也可以在标准表示中使用,具体取决于国旗。您可以删除用于构造日期时间的解析器调用。使用日期时间日期=新日期时间(da)
int days = 7;
DateTime dateRedeemed = DateTime.now();
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/uuuu");
String newDate = dateRedeemed.plusDays(days).toString(formatter);
System.out.println(newDate);
public static Date addDay(int day) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.add(Calendar.DATE, day);
return calendar.getTime();
}
let d=new Date();
d.setTime(d.getTime()+86400000);
console.log(d);
let format1 = new Intl.DateTimeFormat('en', { year: 'numeric', month: 'numeric', month: '2-digit', day: '2-digit'});
let [{ value: month },,{ value: day },,{ value: year }] = format1.formatToParts(d);