StringTokenizerを使用して「2013-02-27 06:06:30」のようなデータベースから日付値を取得しています
String startTime = "2013-02-27 06:06:30";
StringTokenizer token = new StringTokenizer(startTime);
String date1 = token.nextToken();
String time1 = token.nextToken();
そして、時間1に私は06:06:30の結果を得ています
次のように、String型の別の変数に再保存できますか?
String displayValue = "06:06 AM";
そして、time1変数の値が
String time = 16:00:00;
次に、次のように変換する必要があります。
String displayValue = "04:00 PM";
こんなふうに答えてもらいました。
startTime = "2013-02-27 21:06:30";
StringTokenizer tk = new StringTokenizer(startTime);
String date = tk.nextToken();
String time = tk.nextToken();
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
SimpleDateFormat sdfs = new SimpleDateFormat("hh:mm a");
Date dt;
try {
dt = sdf.parse(time);
System.out.println("Time Display: " + sdfs.format(dt)); // <-- I got result here
} catch (ParseException e) {
e.printStackTrace();
}
これを試して..
Date dt = new Date(date1);
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa");
String time1 = sdf.format(dt);
最初に、文字列時間を取得するためにStringTokenizer
を使用する必要はありません。次のようにstartTime
を渡すだけです:
// Get date from string
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = dateFormatter.parse(startTime);
// Get time from date
SimpleDateFormat timeFormatter = new SimpleDateFormat("h:mm a");
String displayValue = timeFormatter.format(date);
// Done!
これを試して
String time = "22:35";
try {
SimpleDateFormat sdf = new SimpleDateFormat("H:mm");
Date dateObj = sdf.parse(time);
System.out.println(dateObj);
System.out.println(new SimpleDateFormat("K:mm").format(dateObj));
} catch (final ParseException e) {
e.printStackTrace();
}
このリンクをトレースしてください http://developer.Android.com/reference/Java/text/SimpleDateFormat.html
Date dt = new Date(date1);
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa");
String time1 = sdf.format(dt);
出力2.00 a.m.
Date dt = new Date(date1);
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a",Locale.US);
String time1 = sdf.format(dt);
出力2.00 AM
SimpleDateFormat のようなDateFormatの使用をお勧めします
try {
String timeLong = "2013-02-27 06:06:30";
String timeShort = "16:06 AM";
SimpleDateFormat formatLong = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
SimpleDateFormat formatShort = new SimpleDateFormat("hh:mm aa", Locale.US);
Log.v("out", formatShort.format(formatLong.parse(timeLong)));
Log.v("out", formatShort.format(formatShort.parse(timeShort)));
} catch (ParseException e) {
e.printStackTrace();
}
私は今日疲れており、このコードに何かが欠けているように感じているので、後で修正するかもしれませんが、機能し、非推奨のDateクラスを(直接)呼び出しません。
1現在の時刻を09:30 PMの形式で表示する必要があると仮定します。これはかなり簡単なアプローチです。現在の時間にそれを必要としない場合でも、要件に以下のDateFormatを使用できるはずです。
Calendar cal = Calendar.getInstance();
DateFormat outputFormat = new SimpleDateFormat("KK:mm a");
String formattedTime = outputFormat.format(cal.getTime());
2注:次のフォーマッターを使用して、同じ時間を24時間形式で表示できます(21:30 )。
new SimpleDateFormat("HH:mm");
3ただし、最初のポイントと同じ形式を構築する場合は、次のコードをJavaの抑止として使用するのが最適ですStringTokenizer。これについては、こちらで読むことができます http://docs.Oracle.com/javase/6/docs/api/Java/util/StringTokenizer.html
これがお役に立てば幸いです!
String startTime = "2013-02-27 21:06:30";
String[] parts = startTime.split(" ");
DateFormat outputFormat = new SimpleDateFormat("KK:mm a");
SimpleDateFormat parseFormat = new SimpleDateFormat("hh:mm:ss");
try {
Date dt = parseFormat.parse(parts[1]);
System.out.println(outputFormat.format(dt));
} catch(ParseException exc) {
exc.printStackTrace();
}
次のパターンを使用するだけで、期待どおりの結果が得られます
try {
String time = "06:06:30";
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
Date dt = sdf.parse(time);
SimpleDateFormat sdfs = new SimpleDateFormat("hh:mm a");
String formatedTime = sdfs.format(dt);
Log.v("parseTime", formatedTime);
} catch (ParseException e) {
e.printStackTrace();
}
ハッピーコーディング:)
On Androidまた、 DateFormat があります
選択した回答には、間違った時間を表示するという問題がありました。時間が12:30:の場合、代わりに12:30 AMと表示されます12:30 PM。以下のコードは、問題を克服するのに役立ちます。
SimpleDateFormat sdf = new SimpleDateFormat("KK:mm:ss");
SimpleDateFormat sdfs = new SimpleDateFormat("hh:mm a");
Date dt1 = null;
try {
dt1 = sdf.parse("12:00:00");
Log.i("Time in Am Pm ", sdfs.format(dt1));
} catch (ParseException e) {
e.printStackTrace();
}