답변:
이와 같은 것이 트릭을 수행해야합니다.
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
add()
날짜를 굴립니다. ideone을 참조하십시오 .
Java는 C #에 비해 8 공보다 훨씬 낫습니다. 이 유틸리티 메소드는 Calendar.add 메소드 (아마도 유일한 쉬운 방법)를 사용하여 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);
java.util.Date
, java.util.Calendar
그리고 java.text.SimpleDateFormat
지금 기존 에 의해 대체, java.time의 나중에 자바 8에 내장 된 클래스. Oracle의 Tutorial 을 참조하십시오 .
Java 8 이상에서 java.time 패키지 는 이것을 거의 자동으로 만듭니다. ( 튜토리얼 )
String
입력 및 출력 가정 :
import java.time.LocalDate;
public class DateIncrementer {
static public String addOneDay(String date) {
return LocalDate.parse(date).plusDays(1).toString();
}
}
LocalDate
입니다.
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 객체를 반환하고 이전 객체 자체는 변경하지 않습니다.
Joda-Time ( https://www.joda.org/joda-time/ )을 살펴보십시오 .
DateTimeFormatter parser = ISODateTimeFormat.date();
DateTime date = parser.parseDateTime(dateString);
String nextDay = parser.print(date.plusDays(1));
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);
januaryFirst.plusDays(1)
아니었다 고 생각합니다 date.plusDays(1)
.
간단한 java.util lib를 사용할 수 있습니다
Calendar cal = Calendar.getInstance();
cal.setTime(yourDate);
cal.add(Calendar.DATE, 1);
yourDate = cal.getTime();
java.util.Date
, java.util.Calendar
그리고 java.text.SimpleDateFormat
지금 기존 에 의해 대체, java.time의 나중에 자바 8에 내장 된 클래스. Oracle의 Tutorial 을 참조하십시오 .
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에서 다른 숫자로 변경할 수 있습니다.
Date
또는 Calendar
다시.
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
LocalDate
클래스를 사용 하지 마십시오 LocalDateTime
.
long timeadj = 24*60*60*1000;
Date newDate = new Date (oldDate.getTime ()+timeadj);
oldDate에서 획기적인 시간 (밀리 초)이 걸리고 1 일 분의 밀리 초를 추가 한 다음 Date () 공용 생성자를 사용하여 새 값을 사용하여 날짜를 만듭니다. 이 방법을 사용하면 하루 종일뿐만 아니라 1 일 또는 몇 시간 / 분을 추가 할 수 있습니다.
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));
LocalDate
Java 8 이상에 대한 java.time 클래스의 클래스이며 ThreeTen-Backport 프로젝트 에서 Java 6 및 Java 7 로의 백 포트 입니다.
Java 8에서 간단한 방법은 다음과 같습니다.
Date.from(Instant.now().plusSeconds(SECONDS_PER_DAY))
Instant.now().plus( 1 , ChronoUnit.DAYS )
않습니까?
자바 8에서는 사용할 수 있습니다 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());
LocalDate
다음과 같이 문자열로 형식화 할 수 있습니다 .
String str = addedDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
간단한 단어로 설명하려고하는 것은 매우 간단합니다. 아래와 같이 오늘 날짜를 얻으십시오
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime());// print today's date
calendar.add(Calendar.DATE, 1);
이제이 날짜로 일정을 앞당기 고 calendar.add 메소드 (일정한 값)로 설정하십시오. 여기서 상수는 DATE,시, 분, 초 등이 될 수 있으며 value는 상수의 값입니다. 하루 일정과 마찬가지로 상수는 Calendar.DATE이며 하루 값을 원하기 때문에 값은 1입니다.
System.out.println(calendar.getTime());// print modified date which is
내일 날짜
감사
Apache Commons에는 이미 DateUtils.addDays (날짜, 정수)가 있습니다. http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/time/DateUtils.html#addDays%28java .util.Date, % 20int % 29 사용하거나 JodaTime을 사용하여 더 깨끗하게 만들 수 있습니다.
문자열로 날짜를 전달하고 다음 날 수를 전달하십시오.
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;
}
단일 시간 단위를 추가하고 다른 필드도 증가시킬 것으로 예상되는 경우 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 SE 8 이상을 사용하는 경우 새로운 날짜 / 시간 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 SE 8 이전의 Java에 대한 사실상 표준 날짜 및 시간 라이브러리입니다.
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);
java.time
부품 패턴 이 잘못되었습니다. 그것은해야 dd/MM/uuuu
JodaTime 하나에 해당 될 수 있습니다.
DateFormat
API를 사용하여 문자열을 Date 객체로 변환 한 다음 Calendar
API를 사용하여 하루를 추가하십시오. 특정 코드 예제를 원하면 알려 주시면 답변을 업데이트 할 수 있습니다.
당신은 자바 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);
}
toString()
문자열 yyyy-MM-dd 형식을 생성하는 데 사용하십시오 (고집 mm
하는 MM
경우 월 동안 몇 분임을 기억하십시오 ).
"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);
Date
2018 년 수업 제안 은 좋지 않은 조언입니다. 번거로운 구식 날짜 수업java.util.Date
, java.util.Calendar
그리고 java.text.SimpleDateFormat
지금 기존 에 의해 대체, java.time의 자바 8 자바 9 페이지에 내장 된 클래스 튜토리얼 오라클 . LocalDate
클래스를 사용하는 다른 답변을 참조하십시오 .
SimpleDateFormat
클래스는 불행하게도 암시 적으로 JVM의 현재 기본 영역을 적용 시간대를 주입한다. 따라서이 코드의 결과는 현재 기본값에 따라 달라지며 런타임 중에 언제든지 기본값이 변경 될 수 있습니다 .
실제로 간단합니다. 하루에는 86400000 milliSeconds가 포함됩니다. 따라서 먼저 시스템 에서 밀리 초 단위로 현재 시간을 얻은 System.currentTimeMillis()
다음 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();
문자열 DayAfterTommorow는 2019-05-11입니다.
Date
현대 java.time 클래스에 의해 몇 년 전에 대체 된 끔찍한 클래스를 사용합니다 . 간단하게 사용하는 것이 훨씬 간단합니다 :LocalDate.parse( "2019-01-23" ).plusDays( 1 )
유스 케이스를 명확히하자 : 달력 산술을하고 java.util.Date로 시작 / 끝내기를 원한다. .
일부 접근법 :
java.time.Instant 사용을 고려하십시오 .
Date _now = new Date();
Instant _instant = _now.toInstant().minus(5, ChronoUnit.DAYS);
Date _newDate = Date.from(_instant);
Date
현대의 java.time 클래스와 같은 끔찍한 레거시 클래스를 절대로 혼합하지 마십시오 Instant
. java.time의 클래스는 완전히 기존의 클래스를 대신하다. 특히을 Instant
대체합니다 java.util.Date
.
Date newDate = new Date();
newDate.setDate(newDate.getDate()+1);
System.out.println(newDate);
Sun Apr 30 16:25:33 CEST 2017
온다 Mon May 01 16:25:33 CEST 2017
. 그래도 여전히 낙담 한 해결책입니다. 이 방법은 좋은 이유로 사용되지 않을뿐만 아니라 2017 년에도 Date
클래스 에 대한 대안이 매우 우수합니다 .