2017-10-22 2 views
-1

현재 날짜 및 시간을 가져 와서 현재 시간/날짜 및 다음 시간 등을 포함하는 모음을 만들려고합니다.CET없이 날짜/시간 출력을 얻으려면 어떻게해야합니까?

저는 Java의 초보자이며 두 가지 문제에 직면 해 있습니다. 출력은 다음과 같습니다

토 10월 (23) 중부 유럽 표준시 00시 07분 27초 1937

토 10월 내가 날짜/시간을 얻을 수있는 방법 (23) 중부 유럽 표준시 01시 07분 27초 1937

  1. 1973 년 CET없이?
  2. 평일 (sat)이 실제 (월요일) (2 일 전) 인 이유는 무엇입니까?

소스 코드는 다음과 같습니다

SimpleDateFormat format1 = new SimpleDateFormat("EEE, d MMM HH:mm"); 
    System.out.println(format1.getCalendar().getTime()); 
    format1.getCalendar().add(Calendar.HOUR, 1);   
    System.out.println(format1.getCalendar().getTime()); 
+0

이 출력을 생성하는 코드를 표시하십시오. 또한, 1937 년 10 월 23 일 *이 월요일이 아닌 토요일임을 분명히하십시오. 1973 년을 기대하십니까? 그리고 CET는 시간에 적용됩니다. 아니 년 – Felix

+0

토 10 월 23 일 01:07:27 CET 1937 ... (CET1937)없이 내 출력을 원한다면 평일을 내 사건에 실제로 적용되는 월요일로 바꾸시겠습니까? – Was

+0

분명히 오늘 날짜를 얻지 못할 것입니다! 당신은 10 월 23 일 ** ** 1937 **을 얻고 있습니다! 컴퓨터에 잘못된 날짜가 있습니까? – Felix

답변

0

는 정확한 날짜를 확인하고 시간은 호스트 컴퓨터에 설정되어 있습니다. 컴퓨터가 잘못 설정된 것 같습니다. http://time.is/

귀찮은 구식 인 Calendar 클래스가 아닌 java.time 클래스를 사용하십시오.

최대 순간 해상도 (나노초)를 UTC로 가져옵니다.

Instant instant = Instant.now() ; 

원하는/예상 시간대를 지정하십시오.

ZoneId z = ZoneId.of("Europe/Paris")) ; 

원하는 시간대로 조정하십시오.

ZonedDateTime zdt = instant.atZone(z) ; 

요일을 확인하십시오.

DayOfWeek dow = zdt.getDayOfWeek() ; 

이 순간과 다음 두 시간을 각각 수집합니다.

List<ZonedDateTime> moments = new ArrayList<>(3) ; 
moments.add(zdt) ; 
moments.add(zdt.plusHours(1)) ; 
moments.add(zdt.plusHours(2)) ; 

DateTimeFormatter 클래스를 사용하여 이러한 값을 나타내는 문자열을 생성합니다. 검색 스택 오버플로에 대한 자세한 정보는 이미 여러 번 다룹니다.

관련 문제