Java에서 날짜를 하루 늘리려면 어떻게 해야 하나요?
yyyy-mm-dd
.
어떻게 하면 이 날짜를 하루 늘릴 수 있나요?
다음과 같은 방법으로 효과를 볼 수 있습니다.
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
갱신(2021년 5월):이것은 오래된 Java에 대한 매우 시대에 뒤떨어진 답변입니다.Java 8 이후의 경우는, https://stackoverflow.com/a/20906602/314283 를 참조해 주세요.
자바는 C#에 비해 8볼에 크게 뒤처져 있는 것 같습니다.이 유틸리티 방법은 Java SE 6에서 Calendar.add 메서드를 사용하여 수행하는 방법을 보여 줍니다(아마 유일한 쉬운 방법일 것입니다).
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.time
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();
}
}
Apache의 Date Utils를 사용하는 것이 좋습니다.http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/time/DateUtils.html 를 확인해 주세요.이 방법은 프로젝트에서 여러 곳을 사용해야 하고 이를 위해 단일 라이너 방법을 쓰고 싶지 않을 때 특히 유용합니다.
API는 다음과 같습니다.
addDays(날짜, int 양) : 새 개체를 반환하는 날짜에 일수를 추가합니다.
새 날짜 개체를 반환하고 이전 날짜 개체 자체를 변경하지 않습니다.
SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd" );
Calendar cal = Calendar.getInstance();
cal.setTime( dateFormat.parse( inputString ) );
cal.add( Calendar.DATE, 1 );
합니다.add(Calendar.DATE, 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);
Joda-Time(https://www.joda.org/joda-time/)을 참조하십시오.
DateTimeFormatter parser = ISODateTimeFormat.date();
DateTime date = parser.parseDateTime(dateString);
String nextDay = parser.print(date.plusDays(1));
이 행에는 24시간이 추가됩니다.
d1.getTime() + 1 * 24 * 60 * 60 * 1000
하지만 이 행은 하루의
cal.add( Calendar.DATE, 1 );
서머타임이 변경되는 날(25시간 또는 23시간)에는 다른 결과를 얻을 수 있습니다.
Simple java.util lib를 사용할 수 있습니다.
Calendar cal = Calendar.getInstance();
cal.setTime(yourDate);
cal.add(Calendar.DATE, 1);
yourDate = cal.getTime();
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 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
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));
long timeadj = 24*60*60*1000;
Date newDate = new Date (oldDate.getTime ()+timeadj);
이것은 oldDate에서 epoch 이후 경과한 밀리초 단위로 1일분의 밀리초를 추가한 후 Date() 퍼블릭컨스트럭터를 사용하여 새로운 값을 사용하여 날짜를 만듭니다.이 방법을 사용하면 하루 종일뿐만 아니라 1일 또는 시간/분 단위로 추가할 수 있습니다.
Java 8의 간단한 방법은 다음과 같습니다.
Date.from(Instant.now().plusSeconds(SECONDS_PER_DAY))
아주 간단해요, 쉬운 말로 설명하려고요.오늘 날짜를 아래와 같이 받다
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입니다.이것은, 1일 전의 값을 원하기 때문입니다.
System.out.println(calendar.getTime());// print modified date which is
내일 날짜
고마워요.
startCalendar.add(Calendar.DATE, 1); //Add 1 Day to the current Calender
Java 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으로 만듭니다.
String str = addedDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
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 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);
Apache Commons에는 이미 이 DateUtils.addDays(날짜, int 금액) http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/time/DateUtils.html#addDays%28java.util.Date,%20int%29가 있습니다.사용자는 이 DateUtils.addDays(날짜, int 금액)를 사용하고 있거나 JodaTime을 사용하여 보다 깔끔하게 할 수 있습니다.
String에 날짜를 입력하고 다음 일 수를 지정하세요.
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;
}
단일 시간 단위를 추가하고 다른 필드도 증가할 것으로 예상할 경우 안전하게 추가 방법을 사용할 수 있습니다.아래의 예를 참조해 주세요.
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
API를 사용하여 String을 날짜 개체로 변환한 후 API를 사용하여 하루를 추가합니다.구체적인 코드 예를 원하시면 알려주시면 답변을 업데이트 해드리겠습니다.
다음 방법을 사용해 보십시오.
public static Date addDay(int day) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.add(Calendar.DATE, day);
return calendar.getTime();
}
사실 간단해요.1 일에는 86400000 밀리초가 포함됩니다.따라서 먼저 시스템을 사용하여 현재 시간(밀리)을 얻습니다.System.currentTimeMillis()
그런 다음 84000000밀리초를 추가하여Date
생성할 클래스 밀리초의 날짜 형식입니다.
예
String Today = new Date(System.currentTimeMillis()).toString();
String Today는 2019년 5월 9일
String Tommorow = new Date(System.currentTimeMillis() + 86400000).toString();
String Tomorrow는 2019-05-10입니다.
String DayAfterTommorow = new Date(System.currentTimeMillis() + (2 * 86400000)).toString();
String Day After Tommorow는 2019년 5월 11일
이 패키지는 "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);
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);
}
사용 사례를 명확히 합시다.캘린더 계산을 하고 java.util로 시작/종료합니다.날짜.
몇 가지 접근법:
- 문자열로 변환한 후 SimpleDateFormat으로 되돌립니다.이것은 비효율적인 솔루션입니다.
- LocalDate로 변환:시간 정보가 손실될 수 있습니다.
- LocalDateTime으로 변환:여기에는 더 많은 단계가 필요하며 시간대를 고려해야 합니다.
- Date.getTime()을 사용하여 epoch로 변환합니다.이 방법은 효율적이지만 밀리초 단위로 계산하고 있습니다.
Date _now = new Date();
Instant _instant = _now.toInstant().minus(5, ChronoUnit.DAYS);
Date _newDate = Date.from(_instant);
이거 한 줄에 할 수 있어요.
예: 5일 추가
Date newDate = Date.from(Date().toInstant().plus(5, ChronoUnit.DAYS));
5일을 빼다
Date newDate = Date.from(Date().toInstant().minus(5, ChronoUnit.DAYS));
Date newDate = new Date();
newDate.setDate(newDate.getDate()+1);
System.out.println(newDate);
언급URL : https://stackoverflow.com/questions/428918/how-can-i-increment-a-date-by-one-day-in-java
'programing' 카테고리의 다른 글
/***/와 같은 C 코멘트에 '<'가 필요한 이유는 무엇입니까? (0) | 2022.08.18 |
---|---|
Vuex - 모듈의 액세스 상태 (0) | 2022.08.18 |
C - 숫자가 소수인지 확인합니다. (0) | 2022.08.13 |
(Flux) 상태 관리에서 명명된 속성 대신 정적 함수를 사용하지 않는 이유는 무엇입니까? (0) | 2022.08.13 |
퍼포먼스 트레이드오프 - MATLAB가 C/C++보다 우수하거나 느린 경우 (0) | 2022.08.13 |