1

jul 05 10:30:00 ist 2012 形式を 2012-07-11 10:30:00.0 形式に変換する必要があります。私は次のことを試しました

  String str_date = "Fri Jul 06 10:30:00 IST 2012";
SimpleDateFormat fmt = new SimpleDateFormat("dd MMM hh:mm:ss Z yyyy");
Date today = null;
try {
    today = (Date) fmt.parse(str_date);
    System.out.println("Todays date:" + today);
} catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

java.sql.Date dt = new java.sql.Date(today.getTime());

私は得ています

java.text.ParseException: 解析不能な日付: "Fri Jul 06 10:30:00 IST 2012" at java.text.DateFormat.parse(DateFormat.java:337) エラー

誰でもこの問題を解決するのを手伝ってもらえますか?

4

2 に答える 2

4

このエラーの両方に従う際に同じ形式を提供するのは、文字列dateの形式と形式が同じではないため、解析できるように同じ形式にするためです。

String str_date = "Fri Jul 06 10:30:00 IST 2012";
SimpleDateFormat fmt = new SimpleDateFormat("dd MMM hh:mm:ss Z yyyy");

例:上記を次のように置き換えます

String str_date = "Fri Jul 06 10:30:00 IST 2012";
SimpleDateFormat fmt = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy");

次のように形式を変更できます。

final String OLD_FORMAT = "EEE MMM d HH:mm:ss z yyyy";
final String NEW_FORMAT = "yyyy-MM-d hh:mm:ss";


String oldDateString = "Fri Jul 06 10:30:00 IST 2012";
String newDateString;

SimpleDateFormat sdf = new SimpleDateFormat(OLD_FORMAT);
Date d = sdf.parse(oldDateString);
sdf.applyPattern(NEW_FORMAT);
newDateString = sdf.format(d);

ここで、dは古い形式の日付になります:Fri Jul 06 10:30:00 IST 2012

新しい日付は2012-07-6 10:30:00

于 2012-07-05T05:33:56.547 に答える
2

コーディングした日付と時刻のパターンが文字列形式と一致しません。

日付と時刻のパターン

詳細については、SimpleDateFormatのドキュメントを参照してください。

"Fri Jul 06 10:30:00 IST 2012"フォーマットを解析するには、 "EEE MMM d H:m:s z y".

"2012-07-06 10:30:00.0"フォーマットを生成するには、 "yyyy-MM-dd HH:mm:ss.S".

2 つの形式間の完全な変換は次のようになります。

SimpleDateFormat sdf1 = new SimpleDateFormat("EEE MMM d H:m:s z y");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
Date date = sdf1.parse("Fri Jul 06 10:30:00 IST 2012");
assert sdf2.format(date) == "2012-07-06 10:30:00.0";
于 2012-07-05T05:37:27.397 に答える