4

形式で出てくるSQLite DBから日時を取得しています...

2011-01-24 02:45:00

DateTime.Parse("2011-01-24 02:45:00").ToString("HH:mm")C#では、文字列を取得するために簡単に使用できます02:45

Android/Javaでこれを行う方法はありますか? Android アプリのコードは次のようになります...

// dateStr below is logging as correctly being yyyy-MM-dd HH:mm:ss format
String dateStr = cursor.getString(cursor.getColumnIndex("start_time"));
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
String shortTimeStr = sdf.format(dateStr); // <-- throws IllegalArgumentException

編集: doc_180 と Konstantin Burov の両方に感謝します - 与えられた例は、問題を解決するのに役立ちました. 問題の一部は、java.util.Date の代わりに java.sql.Date をインポートしていたことです。私は物事を変えましたが、今では完璧に機能しています。

4

2 に答える 2

13

次のことを行う必要があります。

try {
   Date date = null;
   date = df.parse("2011-01-24 02:45:00");
   SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
   String shortTimeStr = sdf.format(date);
   System.out.println(shortTimeStr);
} catch (ParseException e) {
   // To change body of catch statement use File | Settings | File Templates.
   e.printStackTrace(); 
}

コメントで述べたように、時間を文字列ではなくミリ秒として保存する必要があります。そうでなければ、仲介者オブジェクト Date を作成する以外に方法はありません。

于 2011-01-24T03:09:44.833 に答える
3

SimpleDateFormat.format は、文字列を渡すときに引数として Date または Calendar を想定しています。最初に文字列を日付に変換します。

String dateStr = cursor.getString(cursor.getColumnIndex("start_time"));
SimpleDateFormat toFullDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date fullDate = toFullDate.parse(dateStr);
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
String shortTimeStr = sdf.format(fullDate); 

ええ、データベースにできるだけ長く日付を保存したいので、 Date オブジェクトを取得するのはもっと簡単です:

Long dateMilliseconds = cursor.getLong(cursor.getColumnIndex("start_time"));
Date fullDate = new Date(dateMilliseconds);
于 2011-01-24T03:09:40.997 に答える