[解決済み] Java: 解析不能な日付例外
質問
日付フォーマットを変換しようとすると、例外:unparseable dateが発生し、この問題を修正する方法がわかりません。
イベントの日付を表す文字列を受信しており、この日付をGUIで異なるフォーマットで表示したいのですが。
私が行おうとしていたのは、以下のようなことです。
private String modifyDateLayout(String inputDate){
try {
//inputDate = "2010-01-04 01:32:27 UTC";
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z").parse(inputDate);
return new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(date);
} catch (ParseException e) {
e.printStackTrace();
return "15.01.2010";
}
}
とりあえず一行
String modifiedDateString = originalDate.toString();
はダミーです。以下のような書式で日付文字列を取得したい。
dd.MM.yyyy HH:mm:ss
で、入力Stringの例は以下の通りです。
2010-01-04 01:32:27 utc
上記の例の日付(String)をStringフォーマット dd.MM.yyyy HH:mm:ss に変換する方法をご存知の方はいらっしゃいますか?
ありがとうございました。
編集:入力された日付の形式が間違っていたのを直しましたが、まだうまくいきません。上記は貼り付けたメソッド、下記はデバッグ時の画面イメージです。
アルトテキスト http://img683.imageshack.us/img683/193/dateproblem.png
#更新 を実行しました。
String[] timezones = TimeZone.getAvailableIDs();
で、配列の中にUTC Stringがあります。不思議な問題です。
汚いハックをしたらうまくいきました。
private String modifyDateLayout(String inputDate){
try {
inputDate = inputDate.replace(" UTC", "");
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(inputDate);
return new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(date);
} catch (ParseException e) {
e.printStackTrace();
return "15.01.2010";
}
}
しかし、それでも私は、タイムゾーンを切り取ることなく、元の入力を変換することを希望します。
このコードは、JDK 1.6を使用したAndroid携帯電話用に書かれています。
解決するには?
基本的にここでやっていることは
Date#toString()
は、すでに固定パターンを持っています。を変換するには、Javaの
Date
オブジェクトを人間が読みやすい別のStringパターンに変換するには
SimpleDateFormat#format()
.
private String modifyDateLayout(String inputDate) throws ParseException{
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z").parse(inputDate);
return new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(date);
}
ちなみに、quot;unparseable date"例外はここで発生する可能性があります。
のみ
によって投げられます。
SimpleDateFormat#parse()
. これはつまり
inputDate
は期待されたパターンではありません
"yyyy-MM-dd HH:mm:ss z"
. に一致するようにパターンを修正する必要がありそうです。
inputDate
の実際のパターンです。
更新してください。 よし、テストしてみた。
public static void main(String[] args) throws Exception {
String inputDate = "2010-01-04 01:32:27 UTC";
String newDate = new Test().modifyDateLayout(inputDate);
System.out.println(newDate);
}
これは正しくプリントされます。
03.01.2010 21:32:27
(私はGMT-4を使用しています)
アップデート2
あなたの編集のように、あなたは本当に
ParseException
ということです。一番怪しいのは、タイムゾーンの
UTC
. これは実際に
既知の
を、お使いのJava環境で実行していますか?お使いのJavaのバージョンとOSのバージョンは何ですか?確認事項
TimeZone.getAvailableIDs()
. が必要です。
UTC
を挟んでいます。
関連
-
[解決済み】Eclipseがエラーメッセージ "Java was started but returned exit code = 1" を返す
-
[解決済み】なぜjava.io.Fileにはcloseメソッドがないのでしょうか?
-
[解決済み】JavaScriptで「無効な日付」のDateインスタンスを検出する
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaScriptの日付の書式設定方法
-
[解決済み] JavaScriptで現在の日付を取得するには?
-
[解決済み] この日付形式は何ですか?2011-08-12T20:17:46.384Z
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】このコンパイルユニットは名前付きモジュールに関連しているため、名前付きパッケージeclipseを宣言する必要があります。
-
[解決済み】Javaの".class期待値"
-
[解決済み] hibernate のプロパティが見つかりません。
-
[解決済み】java 'jar'が内部コマンドまたは外部コマンドとして認識されない。
-
[解決済み】java.io.IOException: 壊れたパイプ
-
[解決済み】Javaで文字列をコピーするにはどうしたらいいですか?
-
[解決済み】Eclipseで「JUnitテストが見つかりませんでした。
-
[解決済み】純粋なJUnitテストにVisibleForTestingを使用する方法
-
[解決済み] [Solved] java.lang.NoClassDefFoundError: クラスXXXを初期化できませんでした。
-
[解決済み] テスト