2014-09-20 2 views
0

나는 내 url을 적절히 만들 수 있도록 Calendar를 사용하여 startTime과 endTime을 얻으려고합니다. 어제 자정 날짜 2014/09/19 00:00으로 startTime을 만들고 오늘 자정 날짜 인 endTime을 2014/09/20 00:00으로 만들어야합니다.캘린더를 사용하여 시작 및 종료 시간을 생성하는 방법은 무엇입니까?

내 프로그램을 실행할 때마다 어제 자정 시간으로 startTime을 생성하고 내 프로그램이 실행되는 자정으로 endTime을 생성해야합니다.

나는 아래 코드를 가지고 있지만 시작 프로그램의 코드는 2014/09/20 00:00이고, 종료 시간은 2014/09/20 16:00입니다. 프로그램을 지금 실행하고 있습니다.

private static final DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm"); 

Calendar startDate = new GregorianCalendar(); 
startDate.set(Calendar.MINUTE, 0); 
Calendar endDate = (Calendar) startDate.clone(); 
startDate.set(Calendar.HOUR_OF_DAY, 0); 

String startTime = df.format(startDate.getTime()); 
String endTime = df.format(endDate.getTime()); 

내가 잘못하고있는 것이 있습니까?

+0

시간, 분 및 초를 0으로 설정하십시오. – MadProgrammer

답변

1

다음을 시도해보십시오.

Calendar startDate = new GregorianCalendar(); 
    startDate.set(Calendar.MINUTE, 0); 
    startDate.set(Calendar.HOUR_OF_DAY, 0); 
    startDate.add(Calendar.DAY_OF_MONTH, -1); 
    String startTime = df.format(startDate.getTime()); 
    System.err.println(startTime); 

    Calendar endDate = (Calendar) startDate.clone(); 
    endDate.add(Calendar.DAY_OF_MONTH, 1); 
    String endTime = df.format(endDate.getTime()); 
    System.err.println(endTime); 

그것은 (2014년 9월 21일 오전 1시 50분에) 작업을 수행해야합니다

2014/09/20 00:00 
2014/09/21 00:00 
+0

감사 kraal. 내 경우에 그것은 oppostie 여야합니다. startTime 저는'2014/09/20 00 : 00'으로 나타나지만'2014/09/19 00 : 00'이어야합니다. 오늘 날짜는 9 월 20 일이고 endTime은 제가 받고 있습니다. '2014/09/21 00:00'으로 표시되지만 '2014/09/20 00 : 00'이어야합니다. – john

0

날 항상 0시 0분 0초

두 질문에서 시작되지 않음 다른 대답은 그날의 첫 번째 순간 ("자정")이 00 : 00 : 00.000 시간이라고 가정합니다. Daylight Saving Time (일광 절약 시간제) 및 기타 예외적 인 경우 일 수는 있습니다.

시간대

모두 질문과 다른 대답은 시간대의 문제를 무시합니다. 날짜 결정은 시간대에 따라 다릅니다. 일반적으로 의도 된 시간대를 명시 적으로 지정하는 것이 가장 좋습니다.

Joda 타임 여기

는 위의 두 가지 문제를 해결하는 동안 질문에 대답하기 위해 Joda-Time 2.4 라이브러리를 사용하여 몇 가지 예제 코드입니다.

DateTimeZone timeZone = DateTimeZone.forID("America/Montreal"); 
DateTime now = DateTime.now(timeZone); 
DateTime todayStart = now.withTimeAtStartOfDay(); 
DateTime tomorrowStart = now.plusDays(1).withTimeAtStartOfDay(); 

플러스 Joda-Time에는 간격, 기간 및 기간의 세 가지 클래스가 있습니다.

Interval today = new Interval(todayStart, tomorrowStart); 
관련 문제