- ベストアンサー
文字列から読み込んだ時刻の操作について
- 文字列表記された時刻を特定のフォーマットに変換・タイムゾーンの計算を行うプログラムの作成方法を教えてください。
- CalenderクラスとSimpleDateFormatクラスを使用して、時間の加減算と文字列からDate型への変換を行います。
- 出力結果の指定した形式にならない場合は、SimpleDateFormatクラスのapplyPatternメソッドの引数を修正することで指定した形式に変更できます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>どこを直せば、指定した通りの出力形式になるのか、教えてください。 printlnしているdatは、生のDateですから System.out.println("test1:"+sdf.format(dat)); してやればいいことだと思います。 >Date型の時にタイムゾーンだけを抽出する もう一つ意味がよくわからないのですが、 getTimezoneOffset() するというような意味ですか? それか TimeZone.getDefault().getDisplayName(false,TimeZone.SHORT,Locale.US) または TimeZone.getDefault().getID() ?
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>"+09:00"は時刻の文字列パターンはあるのでしょうか?(+0900 なら、'Z'という風な。) ? どういう意味でしょう? ごめんなさい、よくわからないです。 できたら、これにこういうメソッドを適用するとこういうものが取り出せるみたいな目的を教えて貰えませんか? sdf.applyPattern("Z"); System.out.println(sdf.format(dat)); すればいいような気もしますが、そういう意味じゃないんですよね?
お礼
結局、それらしい文字コードが見当たりませんでしたので、自分なりに地道に文字列操作で解決させました。 お忙しい中、ご教授頂きありがとうございました。
補足
混乱させてしまい、申し訳ございません(汗) >これにこういうメソッドを適用するとこういうものが取り出せるみたいな目的を教えて貰えませんか? String strPreTime2 = "2005-12-09T23:59:19+0900"; SimpleDateFormat sdf2 = new SimpleDateFormat(); sdf2.setDateFormatSymbols(new DateFormatSymbols(Locale.US)); sdf2.applyPattern("yyyy-MM-dd'T'HH:mm:ssZ"); Date dat2 = sdf2.parse(strPreTime2); "2005-12-09T23:59:19+0900"をDate型に変換したdat2に.getTimezoneOffset()メソッドをかけると、int型で、"-540"と出ます。時差+9時間を分に直して修正したものです。 ただ、"2005-12-09T23:59:19+09:00"をDate型"yyyy-MM-dd'T'HH:mm:ssZ"に変換しようと思っても、"+09:00"に対応する時刻文字列が"Z"ではないのか、エラーで弾かれてしまいます。 対応する文字コードがあるのか、知ってたら教えてください。 というのが、質問の趣旨でした。 APIを見てもそれらしい記述がありませんでした。 未対応という結論であるのなら、地道に文字列操作で頑張ろう、と思います。 本当に、混乱させて申し訳ございませんでした。
補足
ご教授ありがとうございます。 >>どこを直せば、指定した通りの出力形式になるのか、教えてください。 >printlnしているdatは、生のDateですから >System.out.println("test1:"+sdf.format(dat)); >してやればいいことだと思います。 上記部分に訂正した所、上手くいきました。 >>Date型の時にタイムゾーンだけを抽出する もう一つ意味がよくわからないのですが、 >getTimezoneOffset() >するというような意味ですか? >それか >TimeZone.getDefault().getDisplayName(false,TimeZone.SHORT,Locale.US) >またはTimeZone.getDefault().getID()? 質問が悪く申し訳ございません。 getTimezoneOffset()する事ですね。此方の方も参考になりました。ありがとうございます。 ところで、、、 2005-12-09T23:59:19+09:00 の、 "+09:00"は時刻の文字列パターンはあるのでしょうか?(+0900 なら、'Z'という風な。) 検索し、APIなどで調べてるのですが見当たりません。 http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/text/SimpleDateFormat.html もう地道にString型で弄っていった方がいいでしょうか。。。(^^;