0

私はフォーマットのDateオブジェクトを持っています

 /107/2013 12:00:00 AM

私にとっての期待値:

2013-07-01

どうすればこれを行うことができますか?.

私はこのコードで試しています

public static  Date  formatearFecha( Date fecha ){

    String fechaString = new SimpleDateFormat("yyyy-MM-dd").format(fecha) ;
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    Date fechaFormateada = null;
    try {
        fechaFormateada = df.parse(fechaString);
    } catch (ParseException ex) {
        Logger.getLogger(TestThings.class.getName()).log(Level.SEVERE, null, ex);
    }
    return fechaFormateada;

}

テストを作成しようとすると、次のようになります。

 System.out.println( formatearFecha(myDate) );
 Mon Sep 30 00:00:00 COT 2013

アップデート:

私の問題は、SQLをjava.util.Dateからjava.sql.Date
に変更することでした。これを解決するには、次のようにします。

private  String formatearFecha( Date fecha ){
    return new SimpleDateFormat("yyyy-MM-dd").format(fecha);
}

private java.sql.Date stringToSQLDate( String fecString ){

    java.sql.Date fecFormatoDate = null;
    try {
          SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd", new Locale("es", "ES"));
         return  new java.sql.Date(sdf.parse(fecString).getTime());
    } catch (ParseException ex) { }
    return null;
}

そしてテスト:

stringToSQLDate( formatearFecha( myDate ) );
4

2 に答える 2

8

まず第一に、java.util.Date オブジェクトにはフォーマットが格納されることはありません。Date は、UTC タイムゾーンのエポックからのミリ秒単位の long 値を含むオブジェクトと考えることができます。このクラスにはいくつかのメソッドがありますが、タイムゾーン オフセット、フォーマットされたパターンなどは格納されていません。

次に、次の基本的なコードを使用して、マシンのロケールで日付を yyyy-MM-dd にフォーマットできます。

Date mydate = ...
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String mydateStr = df.format(mydate);

同様に、次のように、文字列 "/107/2013 12:00:00 AM" をマシンのロケールの日付オブジェクトに解析できます。

String mydateStr = "/107/2013 12:00:00 AM";
DateFormat df = new SimpleDateFormat("/dMM/yyyy HH:mm:ss aa");
Date mydate = df.parse(mydateStr);

上記の 2 つの方法を使用して、フォーマットされた日付文字列を一方から他方に変更できます。

書式設定コードの詳細については、SimpleDateFormat の javadoc を参照してください。

于 2013-09-05T05:05:19.313 に答える
1
Date myDate = .......
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(dateFormat.format(myDate));
于 2013-09-05T05:18:13.763 に答える