신기원 시간을 주면 : 예를 들어 (1513213212) 오전 1 시부 터 현재는 1이되어야합니다. 오늘의 시간으로 바꾸려면 어떻게해야합니까? 그것은 수학 (division, mod)을 사용하여 가능합니까?신기원 시간을 시간으로 변환하기
답변
수학 만 사용하면 거의 불가능합니다. (도약 연도와 모두). 모든 노력을 다할 수있는 확립 된 API를 사용하는 것이 좋습니다.
다음과 같은 방법으로이 작업을 수행 할 수 있습니다.
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(1513213212* 1000L);
cal.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println(cal.get(Calendar.HOUR));//12 hour clock
System.out.println(cal.get(Calendar.HOUR_OF_DAY));//24 hour clock
어린 학생들에게 오래된 오래된 캘린더 클래스를 사용하지 않도록 가르치십시오. 오늘날 우리는 현대 Java 날짜 및 시간 API 인''java.time' (https://docs.oracle.com/javase/tutorial/datetime/)에서 훨씬 더 뛰어납니다. –
"오늘의 시간"을 묻는 질문을 다르게 해석 했습니까? 두 번째 값이 1513260000이면 정답으로 14를 이해했습니다. 당신의 코드는 2를 인쇄합니다. –
OP가 젊거나 그렇지 않은지 잘 모르겠습니다. 네 말이 맞아, 나는 12 시간 형식을 사용하고 있었다. 24 시간 형식도 추가되었습니다. – 11thdimension
사용 java.time
, 또한 JSR-310로 알려진 현대 자바 날짜와 시간 API : 당신은 단지 수학을하고 싶어해도
01:00:12
1
:
LocalTime timeOfDay = Instant.ofEpochSecond(1513213212L)
.atOffset(ZoneOffset.UTC)
.toLocalTime();
System.out.println(timeOfDay);
int hourOfDay = timeOfDay.getHour();
System.out.println(hourOfDay);
이 인쇄 , 나는 그것을 위해 표준 라이브러리 방법을 사용하는 것을 선호 할 것이다 :
long epochSeconds = 1513213212L;
// convert the seconds to days and back to seconds to get the seconds in a whole number of days
long secondsInWholeDays = TimeUnit.DAYS.toSeconds(TimeUnit.SECONDS.toDays(epochSeconds));
long hourOfDay = TimeUnit.SECONDS.toHours(epochSeconds - secondsInWholeDays);
System.out.println(hourOfDay);
이렇게해도 1
이 인쇄됩니다.
귀하의 의도는 "획기적인 시간을주었습니다. 예 : (UTC) 오전 1시 이후로 1을 가져야합니다."귀하의 의견에 위의 코드 스 니펫 중 어느 것이이 의도를 가장 명확하게 표현합니까? 이것이 제가 선택한 것을 사용하는 것입니다.
MadProgrammer는 his/her comment에서 날짜와 시간 계산이 복잡하므로 날짜와 시간 API에 그대로 두어야한다고 생각하지만 너무 복잡한 수학이 정확하지 않은 드문 경우 중 하나라고 생각합니다. 대답. 윤초 문제를 무시하는 것이 안전한지 여부에 달려 있습니다. 수학 솔루션으로가는 경우이 가정을 확인해야합니다. 개인적으로 나는 어쨌든 그것을 사용하지 않을 것이다.
- 1. Android : 십진수를 시간으로 변환하기
- 2. Clojure에서 Joda 시간으로 변환하기
- 3. php datetime을 계산하고 시간으로 변환하기
- 4. 유닉스 타임 스탬프를 시간으로 변환하기
- 5. 파이썬에서 시간을 float으로 변환하기
- 6. UTC 시간을 현지 시간으로 변환하기 전에 페이지가 표시됩니다.
- 7. 신기원 이후로 몇 시간을 계산합니까?
- 8. Thingworx에서 신기원 시간을 제한하는 방법
- 9. 타임 스트링을 지속 시간으로 변환하기
- 10. 2 시간의 차이를 시간으로 변환하기
- 11. GMT 시간을 Epoch 스크립트로 변환하기
- 12. PHP는 시간을 시간으로 변환합니다.
- 13. 시간을 시간으로 변환 java
- 14. 시간을 초와 시간으로 변환
- 15. 시간을 분과 시간으로 변환하십시오.
- 16. 시간을 시간으로 변환
- 17. 시간을 현지 시간으로 변환
- 18. awk를 사용하여 날짜 파일을 유닉스 시간으로 변환하기
- 19. PostgreSQL 8.3에서 현지 시간으로 UTC 시간 변환하기
- 20. 에포크 이후의 초를 유닉스 시간으로 변환하기
- 21. 신기원 값을위한 NSDateformatter - Coreplot
- 22. EST 시간을 현지 시간으로 변환
- 23. UTC 시간을 현지 시간으로 변환
- 24. 현지 시간으로 GMT 시간을 변환
- 25. 서버 시간을 현지 시간으로 변환
- 26. 군사 시간을 평일 시간으로 변환
- 27. UTC 시간을 IST 시간으로 변환
- 28. 절대 시간을 상대 시간으로 변환
- 29. 유닉스 시간을 읽을 수있는 날짜와 시간으로 변환하기 위해 mysql에 새로운 열을 만든다.
- 30. 유닉스 시간을 PHP로 GMT datetime으로 변환하기
수학을 사용할 수는 있지만 확실한 이유가 있는데 LocalTime 클래스가 존재합니다. –
* "수학 (division, mod)을 사용하면 가능합니까?"* - 엄격히 말하면 그렇지만 그렇게해서는 안됩니다. 날짜/시간 수학은 복잡하고 많은 수의 엣지 케이스를 다루어야합니다 (하루 24 시간 또는 1 년 365 일이 항상있는 것은 아닙니다). Java 8+에서 사용 가능한 Date/Time API를 사용하거나, 실제로 멈춘다면, Calendar 나 java.util.Date를 사용하는 것이 더 낫습니다. – MadProgrammer
이것 좀보세요 : https://stackoverflow.com/ questions/30709897/convert-millisecond-to-joda-date-time-for-zone-0000 –