16

mysql には、datetime 型の time_entered フィールドがあります (サンプル データ: 2012-06-20 16:00:47)。値を文字列として返す getTimeEntered() メソッドもあります。GWT の DateTimeFormat を使用して、この形式 2012-06-20 で日付を表示したいと考えています。

ここに私のコードがあります:

String date = aprHeaderDW.getTimeEntered();
DateTimeFormat fmt = DateTimeFormat.getFormat("MM-dd-yyyy");
dateEntered.setText("" + fmt.format(date));

問題は、format メソッドが引数を String として受け入れないことです。したがって、日付を String 型から Date 型に変換できる唯一の方法があれば、おそらくうまくいくでしょう。型キャストを試みましたが、うまくいきませんでした。

4

4 に答える 4

28

DateTimeFormatを使用できるはずです。

Date date = DateTimeFormat.getFormat("yyyy-MM-dd HH:mm:ss").parse("2012-06-20 16:00:47");
String dateString = DateTimeFormat.getFormat("yyyy-MM-dd").format(date);

それ以外の場合は、このパターンをサポートするSimpleDateFormat の軽量バージョンがあります。

Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2012-06-20 16:00:47");
于 2012-07-05T10:50:13.153 に答える
2

このように使えます。

    String date = "2012-06-20 16:00:47";

    SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
    String lDate=sf.format(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date));

    System.out.println(lDate);

出力:

2012-06-20
于 2012-07-05T11:08:00.807 に答える
2

こんにちは 2 つのオプションがあります。

1 つ目は、既に文字列であるため、正規表現を使用して形式を変更できます。

2 つ目は、SimpleDateFormater を使用して、文字列を日付に解析し、再度戻すことができます。例えば:

public class DateMerge {

    public static void main(String arg[]) 
    {
        String out = dateConvert("2012-06-20 16:00:47");
        System.out.println(out);
    }

    public static String dateConvert (String inDate)
    {
        try {
         DateFormat formatter ; 
         Date date ; 
          formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          date = (Date)formatter.parse(inDate);
          formatter = new SimpleDateFormat("dd-MM-yyyy");
          String outDate = formatter.format(date);
          return outDate;

          } catch (ParseException e)
          {System.out.println("Exception :"+e);  }  


    return null;
    }
}
于 2012-07-05T11:01:39.593 に答える
0

何度も試した後、@Keppilに基づいて独自のコードを追加する解決策を思いつきました。

String datetime を Date 型に変換するための Keppil の推奨ソリューションは次のとおりです。

Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2012-06-20 16:00:47");

...しかし、私の 2 番目の要件は、2012-06-20 のような日付だけを表示することです。HH:mm:ss を削除しても、2012-06-20 00:00:00 のように表示されます。

これが私の最終的な解決策です:

Date date = null;
String d = rs.getString(SQL_CREATION_TIME); // assigns datetime value from mysql

// parse String datetime to Date
try {
date = new SimpleDateFormat("yyyy-MM-dd").parse(d);
System.out.println("time entered: "+  date);
} catch (ParseException e) { e.printStackTrace(); }

// format the Date object then assigns to String
Format formatter;
formatter = new SimpleDateFormat("yyyy-MM-dd");
String s = formatter.format(date);
于 2012-07-06T15:45:29.527 に答える