我正在检索服务中的地点的小时数据(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小时格式显示。
答案 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());