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メソッドが引数を文字列として受け入れないことです。したがって、日付を文字列型から日付型に変換する方法が1つしかない場合は、おそらく機能するでしょう。タイプキャストを試してみましたが、うまくいきませんでした。
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");
こんにちは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;
}
}
このように使えます。
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
何度も試した後、@ Keppilに基づくソリューションを思い付き、独自のコードを追加しました。
以下は、文字列の日時を日付型に変換するための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);