Java에서 현재 시스템 시간보다 4 시간 적은 Date 객체를 어떻게 반환 할 수 있습니까? 가장 간단한 방법약 4 일 전에 날짜를 입력하십시오.
답변
하나 :
Date date = new Date(System.currentTimeMillis() - (4 * 60 * 60 * 1000));
이 그러나 고려 DST (Daylight Saving Time)을지지 않습니다. 대안은 Calendar
입니다.
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR_OF_DAY, -4);
Date date = calendar.getTime();
그러나 이것은 꽤 못생긴 API입니다. 대안은 JodaTime입니다 :
DateTime dateTime = new DateTime().minusHours(4);
Date date = dateTime.toDate(); // If you ever need this...
은 4 시간 (밀리 초)을 빼 밀리 초 단위로 변환 날짜로 다시 변환합니다.
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR_OF_DAY, -4);
calendar.getTime();
'Calendar.HOUR'는 12 시간 (AM/PM) 기준이며 24 시간 기준이 아닙니다. 'Calendar.HOUR_OF_DAY'를 원한다. 또한'Calendar # getInstance()'팩토리를 사용하는 것이 지역별 달력을 수동으로 생성하는 것보다 선호된다. – BalusC
@BalusC : 수정 됨. –
사용하십시오 Calendar
객체와 add
방법.
calendar.add(Calendar.HOUR, -4);
는 http://download.oracle.com/javase/6/docs/api/java/util/Calendar.html
Calendar c = Calendar.getInstance();
c.add(Calendar.HOUR_OF_DAY, -4);
java.util.Date d = c.getTime();
System.out.println(d);
다른 답변이 정확 참조하지만 현대의 대답에 기여하고 싶습니다. 최신 솔루션은 현대 Java 날짜 및 시간 API java.time
을 사용합니다.
Instant fourHoursAgo = Instant.now().minus(Duration.ofHours(4));
System.out.println(fourHoursAgo);
이 단지 인쇄 :
2018-01-31T15:22:21.113710Z
결국 Z
는 시간이 UTC에 인쇄되어 있음을 나타냅니다 - 당신이 경우 UTC가 제로 오프셋 (offset). Instant
클래스는 Date
의 최신 대체품이므로 계속 사용하는 것이 좋습니다. 현대의 API는 일반적으로 작업하기에 훨씬 좋고, 훨씬 깔끔하고, 훨씬 잘 설계되었습니다.
라이브러리 클래스에서 4 시간 뺄셈의 이점을 유의하십시오. 코드는 읽기 쉽고 오류가 발생하기 쉽습니다. 재미있는 상수는 없으며 독자가 올바른지 확인하기 위해 시간을 할애하지 않습니다.
이 같은 변환, 변경할 수 없습니다 또는 변경하지 않는 레거시 API를 사용할 때 예를 들어, 구식 Date
객체가 필요 할 경우
Date oldfashionedDate = Date.from(fourHoursAgo);
링크 :Oracle Tutorial trail: Date Time. 물론 인터넷에 다른 자료도 있습니다. 검색하십시오.
다음 번에는 중복 답변을 게시하는 대신 속임수로 투표를 마감하십시오. – BalusC
포인트 @BalusC를 참조하십시오. 나는 그들에게 정확한 복제물을 고려해봤을 것이다. (나의 두 답변 사이에는 상당한 중복이 있지만 그것들은 동일하지 않다.) –
- 1. jquery datepicker에 날짜를 입력하십시오.
- 2. XlsIo DateTime 약 4 년 동안 올바르지 않습니다.
- 3. 2 일 전에 FBA
- 4. $ _POST 함수가 lpd() 일 때 fpdf를 입력하십시오.
- 5. 표시하기 전에 키보드를 약 1/2 지연시켜야합니까?
- 6. Google App Engine : 효율적인 대규모 삭제 (약 90000/일)
- 7. 약
- 8. 각 날짜보다 n 일 전에 값을 검색하십시오.
- 9. 날짜를 표시하기 전에 날짜를 6 개월 콤보 박스에서 선택
- 10. 이미지가 약 1MB 일 때 실크 아이콘 세트를 어떻게 사용해야합니까?
- 11. 설치하기 전에 특정 날짜를 확인할 수 있습니까?
- 12. getVarDate를 호출하기 전에 JavaScript 날짜를 UTC로 변환해야합니까?
- 13. MySQL에서 n 일 전에 타임 스탬프로
- 14. SQL을 사용하여 오늘 날짜 오늘 날짜를 얻으십시오. (월 - 일)
- 15. Sharepoint 작업 흐름을 만료일 x 일 전에 시작하십시오.
- 16. 인쇄 실버 라이트에서 우리는 응용 프로그램이이 같은 약 4
- 17. MYSQL에 약 4 백만 레코드가 입력되면 브라우저가 다운 됨
- 18. 년, 월, 일 수 없음
- 19. 텍스트에 값을 입력하십시오.
- 20. 약 removeObjectAtIndex
- 21. iPhone 이벤트가 약 회전하고 있습니까?
- 22. 비밀 번호를 여러 번 입력하십시오
- 23. 엔티티에서 가장 빠른 날짜를 찾아서 지금까지의 일 수를 계산하십시오.
- 24. 10 일 후에 어떻게 날짜를 얻을 수 있습니까? asp.net
- 25. JExcelAPI - Excel 시트에 날짜를 쓰면 일, 월 및 연도가 무시됩니다.
- 26. Java로 날짜를 월, 일, 시간으로 어떻게 포맷 할 수 있습니까?
- 27. MySQL 데이터베이스 디자인 : 일 대 일, 일 대 일, 일 대 일, 일 대 일, 일 대 일,
- 28. 180 일 전 날짜의 무엇입니까?
- 29. db에 날짜가 30 일 추가
- 30. 일 계산
왜 DST를 고려하지 않습니까? –
첫 번째 방법은 작동하지만 DST * 시간대 전환 *을 고려하지 않는다고 말하는 것이 더 효과적이라고 생각합니다. +1은 JodaTime을 언급합니다. –
@Thor : 런타임 중에'System # currentTimeMillis()'에 기반하여 지난 4 시간 동안 DST가 활성화/비활성화되었는지 알 수 없으므로 결과 시간이 꺼지는 위험이 따를 수 있습니다. – BalusC