2016-09-19 3 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

あなたはparse関数にその全体 '日付/ date'文字列を渡していますか?それはあなたが望む2つのうちのどれを理解するのではなく、ただ1つの日付/時刻を処理することになっています。文字列を '/'で2つの部分に分割し、その結果の値の1つをパーサーに渡す必要があります。 –

+0

'-07:00'のような固定オフセットは' PST'のようなタイムゾーンの省略形や ​​'America/Los_Angeles'のようなタイムゾーンにマップすることはできません。あまりにも多くのあいまいさがあります。 [タイムゾーンタグwiki](http://stackoverflow.com/tags/timezone/info)の "タイムゾーン!=オフセット"を読んでください。また、米国の「-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、アメ​​リカ/ Los_Angelesですが、ここではJoda-Timeの回答が必要です。 –

関連する問題