我从数据库获取日期值,如“2013-02-27 06: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我得到的结果是06:06:30,
我可以将它重新存储在String类型的另一个变量中,如下所示吗?
String displayValue = "06:06 AM";
如果time1变量的值为
String time = 16:00:00;
然后它应该转换为:
String displayValue = "04:00 PM";
答案 0 :(得分:49)
试试这个..
Date dt = new Date(date1);
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa");
String time1 = sdf.format(dt);
答案 1 :(得分:24)
我得到了这样的回答。
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();
}
答案 2 :(得分:14)
首先,您不需要使用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!
答案 3 :(得分:9)
试试这个
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
答案 4 :(得分:5)
我建议使用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类。
答案 5 :(得分:5)
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();
}
答案 6 :(得分:5)
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
答案 7 :(得分:1)
在Android上,您还有DateFormat
答案 8 :(得分:1)
所选答案存在显示时间错误的问题。如果您的时间是 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();
}
答案 9 :(得分:0)
只需使用以下模式,您将获得预期的结果:
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();
}
快乐编码:)