Java에서 날짜 객체에 시간을 설정하는 방법
Date
Java 로 개체를 만들었습니다 . 그렇게하면 다음과 같이 표시 date=Tue Aug 09 00:00:00 IST 2011
됩니다.. 결과적으로 내 엑셀 파일이 하루 씩 줄어든 것 같다 (2 월 27 일은 2 월 26 일이되는 식으로) 시간 때문인 것 같다. 오후 5시 30 분과 같이 설정하려면 어떻게해야합니까?
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY,17);
cal.set(Calendar.MINUTE,30);
cal.set(Calendar.SECOND,0);
cal.set(Calendar.MILLISECOND,0);
Date d = cal.getTime();
참조
날짜 개체 설정에 사용하는 코드를 보여줄 수 있습니까? 어쨌든 <날짜 초기화에이 코드를 사용할 수 있습니다.
new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse("2011-01-01 00:00:00")
나는 현대적인 대답에 기여하고 싶습니다. 여기에는 java.time
최신 Java 날짜 및 시간 API 를 사용하는 것이 포함되며 , 이를 피할 방법이없는 경우를 제외하고 는 이전 버전이 Date
아닙니다 Calendar
.
귀하의 문제는 실제로 시간대 문제 일 가능성이 높습니다. 2011 년 8 월 9 일 화요일 00:00:00 IST 2011 일 때는 IST 자정 서쪽 시간대에 아직 도달하지 않았습니다. 여전히 8 월 8 일입니다. 예를 들어 Excel에 날짜를 넣는 API가 UTC를 예상하는 경우 날짜는 의도 한 전날이됩니다. 진짜 좋은 해결책은 00:00 UTC (또는 다른 쪽 끝에서 예상되고 사용되는 시간대 또는 오프셋)의 날짜-시간을 생성하는 것입니다.
LocalDate yourDate = LocalDate.of(2018, Month.FEBRUARY, 27);
ZonedDateTime utcDateDime = yourDate.atStartOfDay(ZoneOffset.UTC);
System.out.println(utcDateDime);
이것은 인쇄
2018-02-27T00:00Z
Z
UTC를 의미합니다 (UTC 또는 Zulu 시간대의 오프셋 0으로 생각). 물론 LocalDate
첫 번째 코드 줄에서 Excel로 전달할 수 있다면 더 좋습니다 . 시간이 포함되어 있지 않으므로 혼동이 없습니다. 반면에 구식 Date
객체 가 필요한 경우 전달하기 직전에 변환하십시오 Date
.
Date oldfashionedDate = Date.from(utcDateDime.toInstant());
System.out.println(oldfashionedDate);
내 컴퓨터에서 이것은 인쇄
Tue Feb 27 01:00:00 CET 2018
속지 마십시오. 맞습니다. 내 시간대 (중부 유럽 표준시)는 2 월 UTC (표준 시간)에서 오프셋 +01 : 00이므로 여기서 01:00:00은 UTC 00:00:00과 같습니다. 그냥있어 Date.toString()
JVM들 시간대를 잡아 문자열을 생성하는 그것을 사용.
오후 5시 30 분과 같이 설정하려면 어떻게해야합니까?
직접 질문에 직접 답하기 위해 ZonedDateTime
, OffsetDateTime
또는 LocalDateTime
이있는 경우 이러한 모든 경우에 다음과 같이 요청한 사항을 수행 할 수 있습니다.
yourDateTime = yourDateTime.with(LocalTime.of(17, 30));
경우 yourDateTime
있었다 LocalDateTime
의 2018-02-27T00:00
, 지금은 될 것입니다 2018-02-27T17:30
. 다른 유형과 마찬가지로 오프셋과 시간대도 적절하게 포함합니다.
위의 첫 번째 스 니펫과 같이 날짜 만있는 경우 시간 정보를 추가 할 수도 있습니다.
LocalDate yourDate = LocalDate.of(2018, Month.FEBRUARY, 27);
LocalDateTime dateTime = yourDate.atTime(LocalTime.of(17, 30));
대부분의 경우 특정 시간대에 시간을 추가하는 것이 좋습니다. 예를 들면 다음과 같습니다.
ZonedDateTime dateTime = yourDate.atTime(LocalTime.of(17, 30))
.atZone(ZoneId.of("Asia/Kolkata"));
이것은 2018-02-27T17:30+05:30[Asia/Kolkata]
.
Date
및 Calendar
대java.time
다른 답변 과 Date
마찬가지로 사용하고 사용 하는 수업 은 오래 되고 특히 성가신 것으로 입증되었습니다. 모든 경우에 최신 Java 날짜 및 시간 API는 작업하기에 훨씬 좋습니다. 그렇기 때문에 아직 방문중인 오래된 질문에 대해이 답변을 제공하고 싶었습니다.Calendar
SimpleDateFormat
SimpleDateFormat
링크 : 사용 방법을 설명하는 Oracle Tutorial Date Timejava.time
.
참고 URL : https://stackoverflow.com/questions/5165428/how-to-set-time-to-a-date-object-in-java
'IT박스' 카테고리의 다른 글
vs 코드는 '@ angular / core'모듈 또는 다른 모듈을 찾을 수 없습니다. (0) | 2020.12.03 |
---|---|
콜론 구분 기호가있는 시간대에 대한 Java SimpleDateFormat? (0) | 2020.12.03 |
linux / videodev.h : 해당 파일 또는 디렉토리 없음-우분투 11.04의 OpenCV (0) | 2020.12.03 |
Android에서 전체 ImageView를 채우기 위해 이미지 크기 조정 (0) | 2020.12.03 |
Javascript scrollIntoView () 중간 정렬? (0) | 2020.12.03 |