0

データベースからの文字列結果セットである日付形式を標準形式にキャストしようとしていますが、simpledateformat を使用すると次のエラーが発生します。

Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given Object as a Date
at java.text.DateFormat.format(Unknown Source)
at java.text.Format.format(Unknown Source)
at CopyEJ.CopyEJ.main(CopyEJ.java:113)

RROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2
JDWP exit error AGENT_ERROR_NO_JNI_ENV(183):  [../../../src/share/back/util.c:838]

デバッグを使用すると、変数 time_stmp に値「2013-04-19 17:29:06」があることがわかりました。これにキャストしたい:

yyyyMMddhhmmss

コードは次のとおりです。

SimpleDateFormat df = new SimpleDateFormat("yyyyMMddhhmmss");

        ResultSet rs_dt = cmd1.executeQuery(dt);

        String time_stmp = null;

        while (rs_dt.next())
        {
            time_stmp = rs_dt.getString(1);
        }

        StringBuilder ts = new StringBuilder( df.format( time_stmp ) );

これを達成するための最良の方法は何ですか?

4

7 に答える 7

1

DateFormat.parse()引数は type であるため、ここで使用する必要がありますStringDateFormat.format()一方、Dateオブジェクトを としてフォーマットするために使用されますString

StringBuilder ts = new StringBuilder(df.format(df.parse(time_stmp)));

また、日付/時刻データをTimeStampではなくデータベースに保存することをお勧めしますString

于 2013-06-26T05:39:25.590 に答える
1

Simple DateFormat の日付パターンが間違っています。DBのパターンで日付まで解析し、次に解析してからに戻す必要がありStringます。このようにしてみてください:

    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

    ResultSet rs_dt = cmd1.executeQuery(dt);

    String time_stmp = null;

    while (rs_dt.next())
    {
       time_stmp = rs_dt.getString(1);
    }
    Date d = null;
    try {
       Date d = df.parse(time_stmp);
    } catch (ParseException ex) {
        Logger.getLogger(Prime.class.getName()).log(Level.SEVERE, null, ex);
    }
    SimpleDateFormat df2 = new SimpleDateFormat("yyyyMMddhhmmss");

    StringBuilder ts = new StringBuilder( df2.format(d) );

ところで:
出力を 24 時間形式にしたい場合は、パターンを使用する必要がありますyyyyMMddHHmmss

于 2013-06-26T05:43:18.807 に答える
1

問題は、DB から取得した日付の形式であり、yyyy-dd-MM HH:mm:ssその形式で解析しようとしているyyyyMMddhhmmss

このようなことができます

    String date = "2013-04-19 17:29:06";
    Date d = new SimpleDateFormat("yyyy-dd-MM HH:mm:ss").parse(date);
    SimpleDateFormat outputFormat = new SimpleDateFormat("yyyyMMddhhmmss");
    System.out.println(outputFormat.format(d));
于 2013-06-26T05:43:26.260 に答える
0

こんにちは、以下のコードを使用して、選択した日付をフォーマットできます (例: yyyy-MM-dd HH:mm:ss)

        Calendar calendar = Calendar.getInstance();
        Date calDate = calendar.getInstance().getTime();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("Calendar Date: " + calDate);
        System.out.println("Your Choice Date format (yyyy-MM-dd HH:mm:ss): "+dateFormat.format(calDate));
于 2013-06-26T05:53:49.823 に答える
0

これはうまくいきます

    SimpleDateFormat df = new SimpleDateFormat("YYYY-MM-dd hhhh:mm:ss");
    String time_stmp ="2013-04-19 17:29:06";
    Date date=df.parse(time_stmp);
    StringBuilder ts = new StringBuilder( df.format( date ) );
    System.out.println(ts);
于 2013-06-26T05:54:18.913 に答える
0

String を DateSimpleDateFormat.parse()に変換するために使用します。

Date を StringSimpleDateFormat.format()に変換するために使用します。

すべて一緒に:

SimpleDateFormat dbFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat stdFormat = new SimpleDateFormat("yyyyMMddhhmmss");
String s = stdFormat.format(dbFormat.parse(input));

ニーズに合わせてフォーマットを変更できます。

于 2013-06-26T05:40:24.723 に答える
0

言及されたように、使用する必要があります

SimpleDateFormat.parse()

また、文字列が次の形式の場合

`2013-04-19 17:29:06`

このように読み込むために SimpleDateFormat を構築する必要があります

`yyyy-MM-dd HH:mm:ss` //make sure you use uppercase H for 24 hour times
于 2013-06-26T05:45:56.200 に答える