2016-09-19 1 views
0

내 코드는 -Duser.timezone = UTC로 실행됩니다.문자열 "2016-09-14T00 : 00 : 00.000-07 : 00/2016-09-15T00 : 00 : 00.000-07 : 00"에서 시간대를 결정하십시오.

문자열에서 올바른 시간대를 사용하여 간격을 만들려고합니다.

"2016-09-14T00 : 00 : 00.000-07 : 00/2016-09-15T07 : 00 : 00.000-07 : 00"예를 들어

Interval.parse(str) 나에게

을 제공한다

[2016-09-14/2016-09-15]PST.

하지만 항상 -Duser.timezone = UTC 옵션의 PST b/c 대신 UTC로 간격을 지정합니다.

내가 아는 유일한 방법은이 지루 다음과 같은 단계를 포함 해결하기 위해 :

  1. 가 대응을 상쇄 그 어떤 시간대 찾기 오프셋을 결정하는 문자열

  2. 을 구문 분석합니다. (허용 목록 또는 누군가가 이미 목록을 가지고 있습니까?)

  3. 다음으로 새 Interval을 직접 만드십시오.

더 좋은 방법이 있습니까?

+0

당신은 구문 분석 함수에 그 전체 '날짜/date' 문자열을 전달하는? 그것은 단지 하나의 날짜/시간을 다루기로되어 있고, 둘 중 어느 것을 원하는지 알아 내지 못합니다. 문자열을'/'에 두 부분으로 나누고 그 결과 값 중 하나를 파서에 전달해야합니다. –

+0

'-07 : 00'과 같은 고정 오프셋을 'PST'와 같은 시간대 약어 나 'America/Los_Angeles'와 같은 시간대에 매핑 할 수 없습니다. 너무 많은 모호함이 있습니다. [timezone tag wiki] (http://stackoverflow.com/tags/timezone/info)에서 "Time Zone! = Offset"을 읽으십시오. 또한 미국에서'-07 : 00'은'PST'가 아니라'MST' 나'PDT'라고 생각합니다. –

답변

-1

이것은 당신이 시작할 수 있어야합니다

String dateString = "2016-09-14T00:00:00.000-0700/2016-09-15T07:00:00.000-0700"; 
    String datesInString[] = dateString.split("/"); 

    SimpleDateFormat inputDateFormat = new SimpleDateFormat(
      "yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
    SimpleDateFormat outputDateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
    outputDateFormat.setTimeZone(TimeZone.getTimeZone("PST")); 
    Date date0 = inputDateFormat.parse(datesInString[0]); 
    Date date1 = inputDateFormat.parse(datesInString[1]); 
    String result = outputDateFormat.format(date0) + "/" 
      + outputDateFormat.format(date1) + " " 
      + outputDateFormat.getTimeZone().getID(); 
    System.out.println(result); 
+0

이것은 JodaTime을 사용하지 않으며 오프셋이 실제로 PST임을 확실하게 가정합니다. 실제로는 불가능할 수 있습니다. 아마 PDT, America/Los_Angeles이지만 Joda-Time 응답이 필요합니다. –

관련 문제