如何将日期和时间转换为12小时格式

时间:2014-11-12 08:49:10

标签: android string datetime android-datepicker

你好,我有一个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"

我怎么能这样做?

3 个答案:

答案 0 :(得分:6)

您需要两种格式:一种用于解析,另一种用于格式化。您需要使用一个StringDate解析为DateFormat,然后将Date格式化为另一种格式的String

目前,您的单SimpleDateFormat介于两个之间 - 您有HH这是24小时,但您还有aa上午下午。您希望HH没有aa输入,hh aa输出。 (它几乎从不适合同时拥有HHaa。)

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