Java에서 날짜에 n시간을 추가하시겠습니까?
날짜 개체에 n시간을 추가하려면 어떻게 해야 합니까?StackOverflow에서 days를 사용하는 다른 예를 찾았는데, 여전히 몇 시간 동안 사용하는 방법을 이해하지 못합니다.
확인.Calendar
수업시간이야.add
시간 조작을 가능하게 하는 방법(및 그 외 일부)이 있습니다.
다음과 같은 것이 동작합니다.
Calendar cal = Calendar.getInstance(); // creates calendar
cal.setTime(new Date()); // sets calendar time/date
cal.add(Calendar.HOUR_OF_DAY, 1); // adds one hour
cal.getTime(); // returns new date object plus one hour
자세한 내용은 API를 참조하십시오.
Apache Commons / Lang을 사용하는 경우 다음을 사용하여 한 번에 수행할 수 있습니다.
Date newDate = DateUtils.addHours(oldDate, 3);
(원래 오브젝트는 변경되지 않습니다)
@Christopher의 예를 간단하게 하자.
상수가 있다고 하자.
public static final long HOUR = 3600*1000; // in milli-seconds.
글을 쓸 수 있어요.
Date newDate = new Date(oldDate.getTime() + 2 * HOUR);
날짜 개체 대신 long을 사용하여 날짜/시간을 저장하는 경우 다음을 수행할 수 있습니다.
long newDate = oldDate + 2 * HOUR;
dr;dr
myJavaUtilDate.toInstant()
.plusHours( 8 )
아니면...
myJavaUtilDate.toInstant() // Convert from legacy class to modern class, an `Instant`, a point on the timeline in UTC with resolution of nanoseconds.
.plus( // Do the math, adding a span of time to our moment, our `Instant`.
Duration.ofHours( 8 ) // Specify a span of time unattached to the timeline.
) // Returns another `Instant`. Using immutable objects creates a new instance while leaving the original intact.
java.time 사용
Java 8 이후에 내장된 java.time 프레임워크는 이전 Java.util을 대체합니다.Date/.Calendar 클래스그 오래된 수업들은 귀찮기로 악명 높다.그들을 피하세요.
를 사용합니다.toInstant
method가 java.method에 새로 추가되었습니다.이전 유형에서 새 java.time 유형으로 변환할 날짜입니다.안Instant
는, UTC 의 타임 라인상의 모멘트로, 분해능은 나노초입니다.
Instant instant = myUtilDate.toInstant();
거기에 몇 시간을 더해도 좋다.Instant
를 통과함으로써
Duration duration = Duration.ofHours( 8 );
Instant instantHourLater = instant.plus( duration );
해당 날짜 시간을 읽으려면 를 호출하여 표준 ISO 8601 형식의 문자열을 생성합니다.
String output = instantHourLater.toString();
당신은 그 순간을 어떤 지역의 벽시계 시각의 렌즈를 통해 보고 싶을지도 모른다.를 조정하다Instant
를 생성하여 원하는/예상 시간대로 만듭니다.
ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );
또는 전화할 수 있습니다.plusHours
시간을 더합니다.존이 설정되면 Daylight Saving Time(DST; 일광 절약 시간) 및 기타 이상 현상이 사용자 대신 처리됩니다.
ZonedDateTime later = zdt.plusHours( 8 );
다음과 같은 이전 날짜 클래스 사용은 피해야 합니다.java.util.Date
그리고..Calendar
하지만 정말 필요한 건java.util.Date
java.time 유형에 대해 아직 업데이트되지 않은 클래스와의 상호 운용성을 위해 에서 변환합니다.ZonedDateTime
경유로Instant
. 이전 클래스에 추가된 새로운 메서드는 java.time 유형으로의 변환이 용이합니다.
java.util.Date date = java.util.Date.from( later.toInstant() );
변환에 대한 자세한 내용은 질문에 대한 내 답변, java.util 변환을 참조하십시오.날짜 "java.time"은 무엇입니까?
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 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과 함께
DateTime dt = new DateTime();
DateTime added = dt.plusHours(6);
Java 8 이후:
LocalDateTime.now().minusHours(1);
'API'
newish java.util.concurrent를 사용합니다.TimeUnit 수업은 이렇게 할 수 있습니다.
Date oldDate = new Date(); // oldDate == current time
Date newDate = new Date(oldDate.getTime() + TimeUnit.HOURS.toMillis(2)); // Add 2 hours
예를 들어 다음과 같습니다.
Date oldDate = new Date(); // oldDate == current time
final long hoursInMillis = 60L * 60L * 1000L;
Date newDate = new Date(oldDate().getTime() +
(2L * hoursInMillis)); // Adds 2 hours
이 하다, 하다, 하다, 하다, 할 때 또 코드입니다.Date
일시일하다이 코드의 장점은 더 많은 시간을 지정하면 날짜도 그에 따라 업데이트됩니다.
String myString = "09:00 12/12/2014";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm dd/MM/yyyy");
Date myDateTime = null;
//Parse your string to SimpleDateFormat
try
{
myDateTime = simpleDateFormat.parse(myString);
}
catch (ParseException e)
{
e.printStackTrace();
}
System.out.println("This is the Actual Date:"+myDateTime);
Calendar cal = new GregorianCalendar();
cal.setTime(myDateTime);
//Adding 21 Hours to your Date
cal.add(Calendar.HOUR_OF_DAY, 21);
System.out.println("This is Hours Added Date:"+cal.getTime());
출력은 다음과 같습니다.
This is the Actual Date:Fri Dec 12 09:00:00 EST 2014
This is Hours Added Date:Sat Dec 13 06:00:00 EST 2014
Date argDate = new Date(); //set your date.
String argTime = "09:00"; //9 AM - 24 hour format :- Set your time.
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy");
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy HH:mm");
String dateTime = sdf.format(argDate) + " " + argTime;
Date requiredDate = dateFormat.parse(dateTime);
하실 의향이 java.time
ISO 8601 포맷 기간을 추가하는 방법은 다음과 같습니다.
import java.time.Duration;
import java.time.LocalDateTime;
...
LocalDateTime yourDate = ...
...
// Adds 1 hour to your date.
yourDate = yourDate.plus(Duration.parse("PT1H")); // Java.
// OR
yourDate = yourDate + Duration.parse("PT1H"); // Groovy.
Joda Date Time API로 할 수 있습니다.
DateTime date= new DateTime(dateObj);
date = date.plusHours(1);
dateObj = date.toDate();
Java 8 클래스를 사용합니다.아래와 같이 날짜와 시간을 매우 쉽게 조작할 수 있습니다.
LocalDateTime today = LocalDateTime.now();
LocalDateTime minusHours = today.minusHours(24);
LocalDateTime minusMinutes = minusHours.minusMinutes(30);
LocalDate localDate = LocalDate.from(minusMinutes);
Java 8에서 LocalDateTime 클래스를 사용할 수 있습니다.예:
long n = 4;
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDateTime.plusHours(n));
이 코드는 Java 8에서 동작합니다.추가 라이브러리는 필요 없습니다.
public static String getCurrentDatetimePlusNoOfHours(int numberOfHours) {
String futureDay = getCurrentDatetime(); // Start date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar c = Calendar.getInstance();
try {
c.setTime(sdf.parse(futureDay));
} catch (ParseException e) {
e.printStackTrace();
}
c.add(Calendar.HOUR, numberOfHours); // number of hours to add, if it's minus send - value like -4
futureDay = sdf.format(c.getTime()); // dt is now the new date
return futureDay;
}
Call the method
getCurrentDatetimePlusNoOfHours(4));
다음 방법을 사용할 수 있습니다.이 방법을 이해하고 구현하기 쉽습니다.
public static java.util.Date AddingHHMMSSToDate(java.util.Date date, int nombreHeure, int nombreMinute, int nombreSeconde) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.HOUR_OF_DAY, nombreHeure);
calendar.add(Calendar.MINUTE, nombreMinute);
calendar.add(Calendar.SECOND, nombreSeconde);
return calendar.getTime();
}
언급URL : https://stackoverflow.com/questions/3581258/adding-n-hours-to-a-date-in-java
'programing' 카테고리의 다른 글
boto3 클라이언트 NoRegionError:지역 오류는 가끔만 지정해야 합니다. (0) | 2022.09.04 |
---|---|
Java에서는 클래스 내부의 열거형은 정적입니까? (0) | 2022.09.03 |
XOR의 역함수란 무엇입니까? (0) | 2022.09.03 |
C#의 '수익률' 키워드에 해당하는 Java가 있습니까? (0) | 2022.09.03 |
라우터에 저장하기 위한 액세스 (0) | 2022.09.03 |