[英]Convert time value to format “hh:mm Am/Pm” using Android
我使用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";
試試這個..
Date dt = new Date(date1);
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa");
String time1 = sdf.format(dt);
我得到了這樣的回答。
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();
}
首先,您不需要使用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上午
Date dt = new Date(date1);
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a",Locale.US);
String time1 = sdf.format(dt);
輸出2.00 AM
我建議使用DateFormat,比如SimpleDateFormat
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();
}
快樂編碼:)
在Android上你也有DateFormat
選定的答案有一個顯示錯誤時間的問題。 如果你的時間是12:30:00,那就是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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.