programing

날짜에 하루를 추가하려면 어떻게 해야 합니다.

randomtip 2022. 7. 11. 22:52
반응형

날짜에 하루를 추가하려면 어떻게 해야 합니다.

특정 날짜에 하루를 추가하고 싶습니다.내가 어떻게 그럴 수 있을까?

Date dt = new Date();

이제 이 날짜에 하루를 추가하고 싶습니다.

「」가 됩니다.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 라이브러리의 사용을 진지하게 고려해야 합니다.는 Joda-Time 라이브러리의 다양한 단점 때문입니다.Date조다 타임

Date dt = new Date();
DateTime dtOrg = new DateTime(dt);
DateTime dtPlusOne = dtOrg.plusDays(1);

솔루션 3: Java 8에서는 Joda-Time에서 영감을 얻은 새로운 JSR 310 API를 사용할 수도 있습니다.

Date dt = new Date();
LocalDateTime.from(dt.toInstant()).plusDays(1);
Date today = new Date();
Date tomorrow = new Date(today.getTime() + (1000 * 60 * 60 * 24));

Date에는 UNIX-epoch 이후의 밀리초를 사용하는 컨스트럭터가 있습니다.getTime()-method는 이 값을 제공합니다.하루의 밀리초를 더하면 효과가 있습니다.이러한 조작을 정기적으로 실시하는 경우는, 값의 상수를 정의하는 것을 추천합니다.

중요한 힌트:그것은 모든 경우에 맞는 것은 아니다.아래 경고 주석을 읽어 보십시오.

날짜 개체에 임의 시간을 추가할 수 있는 간단한 방법을 찾았습니다.

Date d = new Date(new Date().getTime() + 86400000)

장소:

86 400 000 ms = 1 Day  : 24*60*60*1000
 3 600 000 ms = 1 Hour :    60*60*1000

Top 답변에서 언급한 바와 같이 Java 8에서는 다음 작업을 수행할 수 있습니다.

Date dt = new Date();
LocalDateTime.from(dt.toInstant()).plusDays(1);

하지만 이것은 때때로 다른 사람들과의DateTimeException 이렇게요.

java.time.DateTimeException: Unable to obtain LocalDateTime from TemporalAccessor: 2014-11-29T03:20:10.800Z of type java.time.Instant

시간대를 통과하는 것만으로 이 예외를 회피할 수 있습니다.

LocalDateTime.from(dt.toInstant().atZone(ZoneId.of("UTC"))).plusDays(1);

dr;dr

LocalDate.of( 2017 , Month.JANUARY , 23 ) 
         .plusDays( 1 )

java.time

수업은 아예 피하는 것이 가장 좋다.그러나 필요한 경우 번거로운 기존 날짜/시간 클래스와 최신 java.time 클래스 간에 변환할 수 있습니다.이전 클래스에 추가된 새 메서드를 확인합니다.

Instant

이 클래스는 다음 클래스와 거의 동등합니다.DateInstant seconds로 만, 「」는 「nano seconds」입니다.Date★★★★★★★★★★★★★★★★★★▼

Instant instant = myUtilDate.toInstant() ;

여기에 하루를 추가할 수 있지만 UTC에서는 이 점에 유의하십시오.따라서 서머타임과 같은 이상 징후는 고려하지 않습니다.클래스와 함께 시간 단위를 지정합니다.

Instant nextDay = instant.plus( 1 , ChronoUnit.DAYS ) ;

ZonedDateTime

, 「」를 합니다.ZoneIdZonedDateTime. 적절한 시간대 이름을 다음 형식으로 지정합니다.continent/region, , , 등Pacific/Auckland EST ★★★★★★★★★★★★★★★★★」IST이는 진정한 표준 시간대가 아니며 표준화되지 않았으며 고유하지도 않기 때문입니다(!).

ZoneId z = ZoneId.of( "America/Montreal" ) ;
ZonedDateTime zdt = instant.atZone( z ) ;
ZonedDateTime zdtNextDay = zdt.plusDays( 1 ) ;

도 있습니다.Period.

Period p = Period.ofDays( 1 ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ).plus( p ) ;

당신은 그 다음날의 첫 순간을 원할지도 모릅니다.하루가 00:00:00에 시작된다고 가정하지 마십시오.Daylight Saving Time(DST; 일광 절약 시간) 등의 이상 징후는 하루가 01:00:00:00와 같은 다른 시간에 시작될 수 있음을 의미합니다.java.time이 해당 존에서 해당 날짜의 첫 번째 순간을 결정하도록 하겠습니다.

LocalDate today = LocalDate.now( z ) ;
LocalDate tomorrow = today.plus( p ) ;
ZonedDateTime zdt = tomorrow.atStartOfDay( z ) ;

java.time 정보

java.time 프레임워크는 Java 8 이후에 포함되어 있습니다.이러한 클래스는 , 및 등 문제가 많은 오래된 레거시 날짜 시간 클래스를 대체합니다.

현재 유지보수 모드에 있는 조다 타임 프로젝트는 java.time 클래스로의 이행을 권장합니다.

자세한 내용은 Oracle 자습서를 참조하십시오.또한 Stack Overflow를 검색하여 많은 예와 설명을 확인하십시오.사양은 JSR 310입니다.

java.time 객체를 데이터베이스와 직접 교환할 수 있습니다.JDBC 4.2 이후준거한JDBC 드라이버를 사용합니다.스트링도 필요 없고java.sql.*②.

java.time 클래스는 어디서 얻을 수 있습니까?

  • Java SE 8, Java SE 9, Java SE 10 이후
    • 붙박이.
    • 번들 구현이 포함된 표준 Java API의 일부입니다.
    • Java 9에는 몇 가지 사소한 기능과 수정 사항이 추가되어 있습니다.
  • Java SE 6 및 Java SE 7
    • java.time 기능의 대부분은 ThreeTen 백포트의 Java 6 및7로 백포트됩니다.
  • 안드로이드
    • 최신 버전의 Android 번들 구현 java.time 클래스.
    • 이전의 Android(<26)에서는 쓰리텐ABP 프로젝트가 ThreeTen-Backport(상기)를 채택하고 있습니다.'쓰리텐ABP 사용방법'을 참조하십시오.

쓰리텐 엑스트라 프로젝트는 java.time을 추가 클래스로 확장합니다.이 프로젝트는 향후 java.time에 추가될 수 있는 가능성을 입증하는 기반입니다.여기에는 , , , 유용한 클래스가 있습니다.


업데이트: Joda-Time 라이브러리가 유지 보수 모드로 전환되었습니다.이 팀은 java.time 클래스로의 이행을 권장합니다.역사를 위해 이 부분은 그대로 두겠습니다.

조다 타임

Joda-Time 2.3 라이브러리는 이러한 종류의 날짜 작업을 훨씬 쉽게 합니다.java.util.Java에 번들된 날짜 클래스는 매우 번거로우므로 피해야 합니다.

다음은 코드 예시입니다.

당신의 java.util.날짜는 Joda-Time DateTime 개체로 변환됩니다.J.U.와는 다르게.Date(날짜)는 할당된 시간대를 실제로 알고 있습니다.표준 시간대는 내일 같은 벽시계를 얻기 위해 하루를 추가하는 것이 이곳 미국에서 일광 절약 시간(DST)의 경우 23시간 또는 25시간과 같은 조정을 의미할 수 있기 때문에 매우 중요합니다.시간대를 지정하면 Joda-Time에서 그런 조정을 할 수 있습니다.하루를 추가한 후 DateTime 개체를 java.util로 다시 변환합니다.날짜 오브젝트

java.util.Date yourDate = new java.util.Date();

// Generally better to specify your time zone rather than rely on default.
org.joda.time.DateTimeZone timeZone = org.joda.time.DateTimeZone.forID( "America/Los_Angeles" );
DateTime now = new DateTime( yourDate, timeZone );
DateTime tomorrow = now.plusDays( 1 );
java.util.Date tomorrowAsJUDate = tomorrow.toDate();

콘솔에 덤프...

System.out.println( "yourDate: " + yourDate );
System.out.println( "now: " + now );
System.out.println( "tomorrow: " + tomorrow );
System.out.println( "tomorrowAsJUDate: " + tomorrowAsJUDate );

실행 시...

yourDate: Thu Apr 10 22:57:21 PDT 2014
now: 2014-04-10T22:57:21.535-07:00
tomorrow: 2014-04-11T22:57:21.535-07:00
tomorrowAsJUDate: Fri Apr 11 22:57:21 PDT 2014

이 메서드는 org.syslog.syslog.time을 Import한 후에 사용할 수 있습니다.날짜:

DateUtils.addDays(new Date(), 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);

Java 8 Time API:

Instant now = Instant.now(); //current date
Instant after= now.plus(Duration.ofDays(300));
Date dateAfter = Date.from(after);

DateTime 오브젝트 obj를 사용합니다.하루 중 원하는 것을 추가할 수 있습니다.이것이 효과가 있기를 바란다:)

날짜 및 시간 산술에는 joda가 훨씬 읽기 쉽기 때문에 선호합니다.

Date tomorrow = now().plusDays(1).toDate();

또는

endOfDay(now().plus(days(1))).toDate()
startOfDay(now().plus(days(1))).toDate()

Java 8 LocalDate API

LocalDate.now().plusDays(1L);

java의 특정성을 줄이기 위해 기본 원리는 선형 날짜 형식, 줄리안 일, 수정된 줄리안 일, 에폭 이후의 초 등으로 변환하고 날짜를 추가한 후 다시 변환하는 것입니다.

이렇게 하는 이유는 이 문제를 망치지 않은 사람에게 "윤일, 윤초 등 올바른 것을 얻으라"는 문제를 떠넘기기 위해서입니다.

이러한 변환 루틴을 올바르게 하는 것은 어려울 수 있습니다.사람들이 시간을 망치는 방법은 놀라울 정도로 다양합니다. 가장 최근의 유명한 예는 MS의 Zune입니다.하지만 MS를 너무 놀리지 마세요. 망치기 쉬우니까요.예를 들어 TAI와 TT의 시간 형식이 여러 개 있는 것은 도움이 되지 않습니다.

최적의 사용 방법:

      long currenTime = System.currentTimeMillis();
      long oneHourLater = currentTime + TimeUnit.HOURS.toMillis(1l);

마찬가지로 월, 일, 분 등을 추가할 수 있습니다.

매우 특별한 경우, 아마도 컴퓨터 프로그래밍 교수로부터 직접 데이트 수업을 듣도록 요청받았을 때론이 방법이라면 아주 잘 할 수 있을 것이다.

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;
        }
    }
}

Java 1.8 버전은 데이터 시간 API에 대한 업데이트가 좋습니다.

다음은 코드 조각입니다.

    LocalDate lastAprilDay = LocalDate.of(2014, Month.APRIL, 30);
    System.out.println("last april day: " + lastAprilDay);
    LocalDate firstMay = lastAprilDay.plusDays(1);
    System.out.println("should be first may day: " + firstMay);
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd");
    String formatDate = formatter.format(firstMay);
    System.out.println("formatted date: " + formatDate);

출력:

last april day: 2014-04-30
should be first may day: 2014-05-01
formatted date: 01

자세한 내용은 다음 클래스에 대한 Java 문서를 참조하십시오.

일 후에 이 코드를 사용하길 원하는 경우..

public Date getToDateAfterDays(Integer day) {
        Date nowdate = new Date();
        Calendar cal = Calendar.getInstance();
        cal.setTime(nowdate);
        cal.add(Calendar.DATE, day);
        return cal.getTime();
    }

Java 8에서 어떻게 할 수 있는지 보여드릴게요.여기 있습니다.

public class DemoDate {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now();
        System.out.println("Current date: " + today);

        //add 1 day to the current date
        LocalDate date1Day = today.plus(1, ChronoUnit.DAYS);
        System.out.println("Date After 1 day : " + date1Day);
    }
}

출력:

Current date: 2016-08-15
Date After 1 day : 2016-08-16

해 볼 수 .java.util.Date

int no_of_day_to_add = 1;

Date today = new Date();
Date tomorrow = new Date( today.getYear(), today.getMonth(), today.getDate() + no_of_day_to_add );

값경의 no_of_day_to_add당신이 원하듯이.

는 나 of of of of of of i of 、 i of of of 로 설정했습니다.no_of_day_to_add로로 합니다.1왜냐면 넌 하루만 더하길 원했으니까

상세한 것에 대하여는, 이 메뉴얼을 참조해 주세요.

언급URL : https://stackoverflow.com/questions/1005523/how-to-add-one-day-to-a-date

반응형