你好,我有一个24小时格式的日期和时间字符串但我想在12小时内如何做到这一点我的字符串是
String date_st="12 Nov, 2014 23:13"
我正在做这个
SimpleDateFormat dateformat = new SimpleDateFormat("dd' 'MMM,' 'yyyy HH:mm aa");
但它根据我的需要不转换它显示23:13 PM
我希望以下列格式显示
String con_date= "12 Nov, 2014 11:13 PM"
我怎么能这样做?
答案 0 :(得分:6)
您需要两种格式:一种用于解析,另一种用于格式化。您需要使用一个String
从Date
解析为DateFormat
,然后将Date
格式化为另一种格式的String
。
目前,您的单SimpleDateFormat
介于两个之间 - 您有HH
这是24小时,但您还有aa
上午下午。您希望HH
没有aa
输入,hh
aa
输出。 (它几乎从不适合同时拥有HH
和aa
。)
TimeZone utc = TimeZone.getTimeZone("etc/UTC");
DateFormat inputFormat = new SimpleDateFormat("dd MMM, yyyy HH:mm",
Locale.US);
inputFormat.setTimeZone(utc);
DateFormat outputFormat = new SimpleDateFormat("dd MMM, yyyy hh:mm aa",
Locale.US);
outputFormat.setTimeZone(utc);
Date date = inputFormat.parse(input);
String output = outputFormat.format(date);
请注意,我将区域设置设置为美国,因此它始终可以解析" 11月和#34;以及时区到UTC,因此您不必担心会跳过某些时间或含糊不清。
答案 1 :(得分:2)
尝试理解SimpleDateFormat符号和含义:
Symbol Meaning
H hour in day (0-23)
K hour in am/pm (0-11)
h hour in am/pm (1-12)
k hour in day (1-24)
SimpleDateFormat dateformat = new SimpleDateFormat("dd' 'MMM,' 'yyyy KK:mm aa");
或强>
SimpleDateFormat dateformat = new SimpleDateFormat("dd' 'MMM,' 'yyyy hh:mm aa");
示例:强>
convertDateStringFormat("12 Nov, 2014 23:13","dd MMM, yyyy HH:mm","dd MMM, yyyy hh:mm aa")
public String convertDateStringFormat(String strDate, String fromFormat, String toFormat){
try{
SimpleDateFormat sdf = new SimpleDateFormat(fromFormat);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
SimpleDateFormat dateFormat2 = new SimpleDateFormat(toFormat.trim());
return dateFormat2.format(sdf.parse(strDate));
}catch (Exception e) {
e.printStackTrace();
return "";
}
}
答案 2 :(得分:2)
尝试这个答案,这是最短和最好的答案。
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss aa");
Datetime = sdf.format(c.getTime());
System.out.println("============="+Datetime);
结果: - ========= 2015-11-20 05:52:25 PM
尝试使用此链接Link here