현재 시간을 나타내는 Date 객체가 있습니다. 이 물체에 5 분을 어떻게 추가 할 수 있습니까?java.util.Date를 사용하여 캘린더 산술을 수행하려면 어떻게해야합니까?
답변
당신은 시간의 길이에 추가 할 쉽게 만들 것입니다 Calendar
을 사용할 수 있습니다 : 당신은 그냥 같이 밀리 초 단위로 시간을 추가 할 수 있습니다 귀하의 경우를 들어
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MINUTE, 5);
Date newDate = cal.getTime();
을 :
Date newDate = new Date(date.getTime() + 5 * 60 * 1000L);
가 고려 Joda-Time을 사용하십시오. 내장 된 것보다 날짜와 시간을 훨씬 더 즐겁게 처리하는 라이브러리입니다.
DateTime
클래스는 plusMinutes
메소드를 제공합니다.
DateTime now = DateTime.now(DateTimeZone.forID("America/Montreal"));
DateTime inFiveMinutes = now.plusMinutes(5);
날짜의 시간은 밀리 초입니다. 그러나이 유형의 계산에는 long
을 사용하는 것이 더 간단 할 수 있습니다.
Date date1 = new Date();
long time1 = date1.getTime();
long time2 = time1 + 5 * 60 * 1000;
Date date2 = new Date(time2);
일반 long
을 사용하는 경우 Date 개체로 줄을 삭제할 수 있습니다.
Java 8에는 새로운 옵션이 있습니다. 실제로 Joda Time은 가능한 한 빨리 Java 8 Date and Time API로 이동할 것을 권장합니다. 다음은이 링크에서 시간을 추가하는 예는 다음과 같습니다
https://docs.oracle.com/javase/tutorial/datetime/iso/period.html
다음 코드는 현재 시간 5 분 추가 :
LocalDateTime now = LocalDateTime.now();
now = now.plusMinutes(5);
System.out.println(now);
코드를 사용해 보셨습니까? ;) –
Busted, thanks :) 또한 고정되어 있습니다 ... –
'LocalDateTime'은 의도적으로 시간대의 개념이 없으므로이 목적을위한 잘못된 클래스입니다. –
자바 7에서 당신은 Apache Commons 라이브러리에서 DateUtils 클래스를 사용할 수 있습니다 :
Date dateWithFiveMinutesAdded = DateUtils.addMinutes(date, 5);
또는 Joda-Time 라이브러리 :
,Date dateWithFiveMinutesAdded = new DateTime(date).plusMinutes(5).toDate();
자바 8을 사용하고 외부 라이브러리가 8 날짜/시간 API 자바에 내장 된 새로운 고려해야 사용하지 않을 경우 :
Date dateWithFiveMinutesAdded = Date.from(date.toInstant().plus(5, ChronoUnit.MINUTES));
또는 대안 :
Date dateWithFiveMinutesAdded = Date.from(date.toInstant().plusSeconds(5 * 60));
단을 Java 8에서는 Date 대신 Instant, ZonedDateTime 또는 LocalDateTime을 사용해야합니다.
분명히 그것을 할 수있는 더 많은 방법이 있지만, 제 생각에는 그것들은 코드 명료성에 관해서는 꽤 깨끗하고 콤팩트합니다.
'LocalDateTime'은 의도적으로 시간대의 개념이 없기 때문에이 목적을위한 잘못된 클래스입니다. –
'날짜'에도 시간대 개념이 없습니다. 'LocalDateTime'으로 변환하고'ZoneOffset.UTC (+0)'로 역으로 변환해도 시간대가 바뀌지 않으므로 모든 것이 잘 보입니다. 이 전환으로 어떤 일이 잘못 될 수있는 상황을 예를 들어 줄 수 있습니까? – luke
'java.util.Date' *가 * 잘못된 * 시간대 개념을 가지고 있습니다. : UTC. '날짜'는 1970 년 첫 번째 순간부터 UTC로 계산 한 것입니다 (윤초는 무시함). 따라서 ** Date는 항상 UTC **로되어 있으며 타임 라인의 특정 지점을 나타냅니다. 'LocalDateTime'은 어떤 존이나 오프셋과도 관련이 없으며, 타임 라인에서 한 순간을 나타내지 않습니다. 따라서 날짜 - 시간의 숫자 표현이 제대로 작동 할 수도 있지만 솔루션의 의미가 잘못되었습니다. java.util.Date에 대한 java.time의 대체는'LocalDateTime'이나'ZonedDateTime'이 아니라'Instant'입니다. –
TL; DR
myDate.toInstant()
.plus(5 , ChronoUnit.MINUTES)
당신이 할
Date
클래스는 더 이상 사용할 수없는 귀찮은 된 날짜 클래스의 일부입니다. 이것들은 java.time 클래스에 의해 대체된다.
Instant
는 기존의 클래스에 추가 된 새로운 방법을 사용하여 Date
Instant
로 변환합니다. 둘 다 타임 라인에서 UTC의 순간을 나타내지 만 새로운 클래스는 나노초의 더 세밀한 분해능을 가지고 있습니다.
Instant instant = myDate.toInstant() ;
5 분 추가가 쉽습니다.
Instant later = instant.plus(5 , ChronoUnit.MINUTES) ;
또는 Duration
을 사용하십시오.
Duration d = Duration.ofMinutes(5) ;
Instant later = instant.plus(d) ;
- 1. numpy 배열에서 조건부 배열 산술을 수행하려면 어떻게합니까?
- 2. PostgreSQL을 사용하여 진공을 수행하려면 어떻게해야합니까?
- 3. 특정 날짜에 작업을 수행하려면 어떻게해야합니까?
- 4. Pellet을 사용하여 오프라인 추론을 수행하려면 어떻게해야합니까?
- 5. ropemac을 사용하여 프로젝트 간 리팩토링을 수행하려면 어떻게해야합니까?
- 6. 레일에서 루비를 사용하여 레코드 페이징을 수행하려면 어떻게해야합니까?
- 7. CodeIgniter를 사용하여 테이블 정렬을 수행하려면 어떻게해야합니까?
- 8. pdo를 사용하여 CRUD 작업을 수행하려면 어떻게해야합니까?
- 9. Perl을 사용하여 CVS 체크 아웃을 수행하려면 어떻게해야합니까?
- 10. PHP 사전을 사용하여 foreach 루프를 수행하려면 어떻게해야합니까?
- 11. UIWebView에서 페이징을 수행하려면 어떻게해야합니까?
- 12. JQuery에서 루프를 수행하려면 어떻게해야합니까?
- 13. Java2D에서 이중 버퍼링을 수행하려면 어떻게해야합니까?
- 14. 캘린더 플러그인을 삽입하려면 어떻게해야합니까?
- 15. SqlDataSource FilterExpression에서 캐스트를 수행하려면 어떻게해야합니까?
- 16. HttpModule에서 XSLT 변환을 수행하려면 어떻게해야합니까?
- 17. Clojure에서 유형 변환을 수행하려면 어떻게해야합니까?
- 18. 하나의보기에서 멀티 태스킹을 수행하려면 어떻게해야합니까?
- 19. 오라클에서 근접 검색을 수행하려면 어떻게해야합니까?
- 20. XSLT에서 문자열 연산을 수행하려면 어떻게해야합니까?
- 21. 페이지로드에서 jax 탐색을 수행하려면 어떻게해야합니까?
- 22. 잠시 후 작업을 수행하려면 어떻게해야합니까?
- 23. WPF에서 3D 변환을 수행하려면 어떻게해야합니까?
- 24. 루비에서 nokogiri 검색을 수행하려면 어떻게해야합니까?
- 25. 텍스처에서 HSL 변환을 수행하려면 어떻게해야합니까?
- 26. listview에서 onclick 액션을 수행하려면 어떻게해야합니까?
- 27. Selenium으로 데이터베이스 테스트를 수행하려면 어떻게해야합니까?
- 28. Entity Framework에서이 작업을 수행하려면 어떻게해야합니까?
- 29. UISplitView로 애니메이션 전환을 수행하려면 어떻게해야합니까?
- 30. 어셈블리에서 산술을 등록하십시오.
그런 단순한 작업에는 완전히 과잉입니다. –
@ 히코 : 당신이 그렇게 간단한 일을 많이하지 않는다면. –
@HeikoRupp 분을 추가하여 날짜 - 시간 값을 조작하는 경우 다른 많은 날짜 - 시간 작업을 수행하고있을 가능성이 큽니다. 이러한 단순한 작업은 [Joda-Time] (http://www.joda.org/joda-time/)과 같은 적절한 데이트 타임 라이브러리가 없으면 신속하게 복잡하고 혼란스럽고 오류가 발생하기 쉽고 디버그하기가 어렵습니다. Java 8의 [java.time 패키지] (http://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html) (Joda-Time에서 영감을 얻음, [JSR 310 ] (https://jcp.org/en/jsr/detail?id=310)). –