我从数据库中获取日期值,如“2013年2月27日6时06分30秒”使用的StringTokenizer我会时间分别如下图所示
String startTime = "2013-02-27 06:06:30";
StringTokenizer token = new StringTokenizer(startTime);
String date1 = token.nextToken();
String time1 = token.nextToken();
在时间1我得到的结果6时06分30秒,
我可以将其重新保存在String类型如下的另一个变量?
String displayValue = "06:06 AM";
如果时间1变量的值
String time = 16:00:00;
然后它应转换为:
String displayValue = "04:00 PM";
Answer 1:
试试这个..
Date dt = new Date(date1);
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa");
String time1 = sdf.format(dt);
Answer 2:
我回答只是在做这样。
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();
}
Answer 3:
首先,你不需要使用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!
Answer 4:
试试这个
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
Answer 5:
我建议使用日期格式,喜欢的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类。
Answer 6:
1假设你需要显示当前时间,格式为下午9点30。 这将是一个相当简单的方法。 即使你不需要它的当前时间,你应该能够使用下面的日期格式为您的要求。
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();
}
Answer 7:
Date dt = new Date(date1);
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa");
String time1 = sdf.format(dt);
输出上午02时
Date dt = new Date(date1);
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a",Locale.US);
String time1 = sdf.format(dt);
输出上午02时
Answer 8:
Answer 9:
选择的答案有错误的显示时间的问题。 如果你的时间是12:30:00它表明上午12:30改为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();
}
Answer 10:
只需使用下面的模式,你会得到您预期的结果:
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();
}
编码愉快:)
文章来源: Convert time value to format “hh:mm Am/Pm” using Android