我正在使用此格式的日期:yyyy-mm-dd
。
如何将此日期增加一天?
答案 0 :(得分:643)
这样的事情可以解决问题:
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
答案 1 :(得分:191)
与C#相比,Java似乎远远落后于八球。此实用程序方法使用Calendar.add method(可能是唯一简单的方法)显示了在Java SE 6中的方法。
public class DateUtil
{
public static Date addDays(Date date, int days)
{
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, days); //minus number would decrement the days
return cal.getTime();
}
}
要根据提出的问题添加一天,请按以下方式调用:
String sourceDate = "2012-02-29";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date myDate = format.parse(sourceDate);
myDate = DateUtil.addDays(myDate, 1);
答案 2 :(得分:66)
在Java 8及更高版本中,java.time package使其非常自动化。 (Tutorial)
假设String
输入和输出:
import java.time.LocalDate;
public class DateIncrementer {
static public String addOneDay(String date) {
return LocalDate.parse(date).plusDays(1).toString();
}
}
答案 3 :(得分:61)
我更喜欢使用Apache的 DateUtils 。检查此http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/time/DateUtils.html。它非常方便,尤其是当您必须在项目中使用多个位置时,并且不希望为此编写单线方法。
API说:
addDays(Date date,int amount):在返回新对象的日期中添加若干天。
请注意,它返回一个新的Date对象,并且不会对前一个对象进行更改。
答案 4 :(得分:57)
SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd" );
Calendar cal = Calendar.getInstance();
cal.setTime( dateFormat.parse( inputString ) );
cal.add( Calendar.DATE, 1 );
答案 5 :(得分:46)
构造一个Calendar对象并使用方法add(Calendar.DATE,1);
答案 6 :(得分:41)
看看Joda-Time(https://www.joda.org/joda-time/)。
DateTimeFormatter parser = ISODateTimeFormat.date();
DateTime date = parser.parseDateTime(dateString);
String nextDay = parser.print(date.plusDays(1));
答案 7 :(得分:39)
请注意,这一行增加了24小时:
d1.getTime() + 1 * 24 * 60 * 60 * 1000
但这一行增加了一天
cal.add( Calendar.DATE, 1 );
在夏令时变化(25或23小时)的日子里,你会得到不同的结果!
答案 8 :(得分:39)
Java 8添加了一个用于处理日期和时间的新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);
答案 9 :(得分:27)
您可以使用Simple java.util lib
Calendar cal = Calendar.getInstance();
cal.setTime(yourDate);
cal.add(Calendar.DATE, 1);
yourDate = cal.getTime();
答案 10 :(得分:23)
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更改为另一个数字以进行适当的增量。
答案 11 :(得分:17)
如果您使用的是 Java 8 ,请按照这样做。
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
如果您想使用 SimpleDateFormat ,请按照这样做。
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
答案 12 :(得分:15)
long timeadj = 24*60*60*1000;
Date newDate = new Date (oldDate.getTime ()+timeadj);
这将从oldDate获取epoch以来的毫秒数,并添加1天毫秒,然后使用Date()公共构造函数使用新值创建日期。此方法允许您添加1天或任何小时/分钟,而不仅仅是整天。
答案 13 :(得分:14)
由于 Java 1.5 TimeUnit.DAYS.toMillis(1)对我来说看起来更干净。
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));
答案 14 :(得分:9)
在Java 8中,简单的方法是:
Date.from(Instant.now().plusSeconds(SECONDS_PER_DAY))
答案 15 :(得分:9)
在java 8中,您可以使用page.evaluate(function() {
var s = new XMLSerializer();
return s.serializeToString(document.getElementById('div'));
});
$_SERVER["REMOTE_ADDR"]
您可以按如下方式转换为$remoteIp = $_SERVER['REMOTE_ADDR'];
if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)) {
$remoteIp = array_pop(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']));
}
对象。
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
答案 16 :(得分:9)
这很简单,试着用一个简单的词来解释。 得到今天的日期如下
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime());// print today's date
calendar.add(Calendar.DATE, 1);
现在提前一天使用calendar.add方法设置此日期,该方法采用(常量,值)。这里的常数可以是DATE,hours,min,sec等,而value是常量的值。就像有一天一样,前面的常量是Calendar.DATE,它的值是1,因为我们想要提前一天的值。
{p>System.out.println(calendar.getTime());// print modified date which is
明天的日期
由于
答案 17 :(得分:7)
Apache Commons已经使用了你使用的DateUtils.addDays(Date date,int amount)http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/time/DateUtils.html#addDays%28java.util.Date,%20int%29,或者你可以使用JodaTime来使它更清洁。
答案 18 :(得分:7)
只需在字符串中传递日期和下一天的数量
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;
}
答案 19 :(得分:7)
如果您想添加一个单位时间,并且您希望其他字段也增加,您可以安全地使用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
答案 20 :(得分:5)
使用DateFormat
API将String转换为Date对象,然后使用Calendar
API添加一天。如果您需要特定的代码示例,请告诉我,我可以更新我的答案。
答案 21 :(得分:3)
如果您使用的是Java 8,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);
}
答案 22 :(得分:3)
您可以使用“org.apache.commons.lang3.time”中的此软件包:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date myNewDate = DateUtils.addDays(myDate, 4);
Date yesterday = DateUtils.addDays(myDate, -1);
String formatedDate = sdf.format(myNewDate);
答案 23 :(得分:3)
试试这个方法:
public static Date addDay(int day) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.add(Calendar.DATE, day);
return calendar.getTime();
}
答案 24 :(得分:2)
让我们澄清一下用例:您要进行日历算术并以java.util.Date开始/结束。
一些方法:
考虑使用java.time.Instant:
Date _now = new Date();
Instant _instant = _now.toInstant().minus(5, ChronoUnit.DAYS);
Date _newDate = Date.from(_instant);
答案 25 :(得分:2)
startCalendar.add(Calendar.DATE, 1); //Add 1 Day to the current Calender
答案 26 :(得分:2)
如果您使用Java SE 8或更高版本,则应使用新的Date/Time API
int days = 7;
LocalDate dateRedeemed = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/YYYY");
String newDate = dateRedeemed.plusDays(days).format(formatter);
System.out.println(newDate);
如果必须从java.util.Date转换为java.time.LocalDate,则可以使用此方法。
public LocalDate asLocalDate(Date date) {
Instant instant = date.toInstant();
ZonedDateTime zdt = instant.atZone(ZoneId.systemDefault());
return zdt.toLocalDate();
}
如果您使用的是Java SE 8之前的版本,建议您使用Joda-Time
Joda-Time提供了Java日期和时间的高质量替代品 类,并且是Java的事实上的标准日期和时间库 Java SE 8之前的版本
int days = 7;
DateTime dateRedeemed = DateTime.now();
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/YYYY");
String newDate = dateRedeemed.plusDays(days).toString(formatter);
System.out.println(newDate);
答案 27 :(得分:1)
实际上很简单。
一天包含86400000毫秒。
因此,首先您可以使用System.currentTimeMillis()
从The System获取以毫秒为单位的当前时间,然后
添加84000000 milliSeconds并使用Date
类生成毫秒的日期格式。
示例
String Today = new Date(System.currentTimeMillis()).toString();
今天的字符串将是2019-05-9
String Tommorow = new Date(System.currentTimeMillis() + 86400000).toString();
String Tommorow将在2019-05-10
String DayAfterTommorow = new Date(System.currentTimeMillis() + (2 * 86400000)).toString();
String DayAfterTommorow将在2019-05-11
答案 28 :(得分:0)
Date newDate = new Date();
newDate.setDate(newDate.getDate()+1);
System.out.println(newDate);
答案 29 :(得分:0)
我认为最快的,永远不会被弃用的,它是进入核心的
let d=new Date();
d.setTime(d.getTime()+86400000);
console.log(d);
只有一行, 并且只有 2 个命令。 它适用于日期类型,不使用日历。
我一直认为最好在代码方面使用 unix 时间,并在它准备好向用户显示时显示日期。
要打印日期 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);
它设置 vars 月年和日,但可以扩展到小时分和秒,也可以用于标准表示中,具体取决于国家/地区。
答案 30 :(得分:0)
您可以在一行中完成此操作。
例如增加 5 天
Date newDate = Date.from(Date().toInstant().plus(5, ChronoUnit.DAYS));
减去5天
Date newDate = Date.from(Date().toInstant().minus(5, ChronoUnit.DAYS));
答案 31 :(得分:0)
在 Kotlin 中,您可以使用这 2 个函数来获取当前日期和未来日期。
fun getCurrentDate(): String {
val currentDate = Calendar.getInstance().time
val dateFormat = SimpleDateFormat("yyyy-dd-MM", Locale.getDefault())
return dateFormat.format(currentDate)
}
fun incrementBy(days: Int): String {
val dateFormat = SimpleDateFormat("yyyy-dd-MM", Locale.getDefault())
val cal = Calendar.getInstance()
cal.time = dateFormat.parse(getCurrentDate())
cal.add(Calendar.DATE, days)
return dateFormat.format(cal.time)
}
通过调用getCurrentDate(),输出为
<块引用>2021-26-07
并通过调用 incrementBy(3),输出为
<块引用>2021-29-07