2013-10-17 14 views
0

내 달력 날짜는 미국/태평양 시간대를 설정하지만이상한 행동()

Calender dateCalender = getDateFromFile(); 
    System.out.println("Calender TimeZone: " + dateCalender.getTimeZone().getDisplayName()); 
    System.out.println("Calender : " + dateCalender.getTime()); 

를 인쇄 할 때 그것은 정확히 같은 날짜/시간이지만 시간대 IST (나는 인도에서 왔어요)를 인쇄합니다. 예를 들어 내가 디버거를 사용하려고하고 내가 캘린더 getTime의 행동을 이해하지

java.util.GregorianCalendar[time=1381257000000,areFieldsSet=false,areAllFieldsSet=false,lenient=true,zone=sun.util.calendar.ZoneInfo[id="US/Pacific",offset=-28800000,dstSavings=3600000,useDaylight=true,transitions=185,lastRule=java.util.SimpleTimeZone[id=US/Pacific,offset=-28800000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=2,startDay=8,startDayOfWeek=1,startTime=7200000,startTimeMode=0,endMode=3,endMonth=10,endDay=1,endDayOfWeek=1,endTime=7200000,endTimeMode=0]],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2013,MONTH=9,WEEK_OF_YEAR=41,WEEK_OF_MONTH=2,DAY_OF_MONTH=9,DAY_OF_YEAR=282,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=2,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=19800000,DST_OFFSET=0] 

보여줍니다 dateCalender 값을 참조하려고

Calender TimeZone: **Pacific Standard Time** 
Calender : Wed Oct 09 00:00:00 **IST** 2013 

를 인쇄합니다. 같은 시간대 형식으로 날짜를 인쇄하는 방법을 알려주십시오.

+5

당신이 그것은 당신의 OS의 시간 설정과 관련이있을 수 있습니다 –

+0

사용하는 코드를 보여 주시겠습니까. – ovunccetin

+0

코드를 보여주세요, 어떻게'dateCalender' 인스턴스를 만드시겠습니까? – gaborsch

답변

2

Calendar 인스턴스를 만드는 동안 올바른 시간대를 설정해야합니다. 예를 들어

: GMT 그렇게 시간이 당신은/태평양 시간대 미국을 설정해야 GMT 같은 방식으로 표시됩니다으로

java.util.Calendar cal = java.util.Calendar.getInstance(
     GMT_TIMEZONE, EN_US_LOCALE); 

위의 코드에서는 우리는 시간대 설정했습니다. 시간대 클래스

3

에 대한

확인 더 코드에서 오류가 없습니다. dateCalender.getTimeZone().getDisplayName()은 달력과 연결된 시간대를 인쇄하고 dateCalender.getTime()은 날짜 개체를 만듭니다. Date 객체는 항상 표준 시스템 시간대를 사용하여 인쇄됩니다.

는 일정 시간대로 인쇄하려면 :

DateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy"); 
    formatter.setTimeZone(dateCalender.getTimeZone()); 
    System.out.println(formatter.format(dateCalender.getTime())); 
+0

그게 내 질문에 어떻게 그 시간대에 날짜를 인쇄 할 수 있습니다. 날짜로 설정된 시간대입니다. – Alex

+0

몇 가지 코드를 추가했습니다. – Daniel