如何将小时数据从24小时格式更改为12小时格式?

时间:2013-07-28 20:41:31

标签: android datetime simpledateformat

我正在检索服务中的地点的小时数据(Factual)。它以24小时格式提供给我,我需要以12小时格式显示它。特定日期的数据如下:

"sunday\":[[\"12:00\",\"21:30\"]]

我可以从JSON成功检索小时数。然后,使用SimpleDateFormat,我可以将字符串解析为Date对象。但是,我无法弄清楚如何将它们转换为12; - 小时格式,以便我可以将它们显示为“12:00 - 9:30”或“12:00 pm - 9:30 pm”而不是“12: 00 - 21:30“。

我该怎么做呢?谢谢!

编辑:

通过使用SimpleDateFormat sdf2 = new SimpleDateFormat("hh:mm a");解析小时字符串(即“12:00”),我从JSON收到一个错误,说该值是不可解析的。如果我只使用SimpleDateFormat sdf2 = new SimpleDateFormat("hh:mm");,那么没有错误,但我无法以12小时格式显示。

2 个答案:

答案 0 :(得分:1)

如果您查看简单的日期格式语法文档,您会发现'h'用于12小时时间,'a'用于AM / PM。在将它们放入日期格式之前,您需要使用子字符串提取两次。 http://developer.android.com/reference/java/text/SimpleDateFormat.html

SimpleDateFormat in = new SimpleDateFormat("<input format goes here>");
Date d = in.parse(INPUT_DATE_STRING);
SimpleDateFormat out = new SimpleDateFormat("<output format goes here>");
String outDate = out.format(d);

答案 1 :(得分:0)

试试这个:

//Char sequence for a 12 hour format. 
CharSequence DEFAULT_FORMAT_12_HOUR = "hh:mm a";
//Char sequence for a 24 hour format.
CharSequence DEFAULT_FORMAT_24_HOUR = "kk:mm";

//date is the Date object. Look for more functions in format.
DateFormat.format(DEFAULT_FORMAT_12_HOUR, date);

让我知道它是否有效。如果您有任何问题,请检查您要发送的日期。

//This should give you the default time on the device. To show that it works.
DateFormat.format(DEFAULT_FORMAT_12_HOUR, Calendar.getInstance());