2013-06-12 156 views
0

是否可以使用joda时间将3位数时间转换为HH:mm格式?我已经试过以下如何将3位24小时制时间转换为12小时制时间?

int databaseTime = cursor.getInt(TIME); 
DateTimeFormatter worldTime = DateTimeFormat.forPattern("HHmm"); 
String localTime = worldTime.parseDateTime(databaseTime); 

这在1000上面的数据库任何时候的伟大工程,但出现了错误,如果超时的数据库是100-900(0100-0900)有错误,如“ 70不是一个小时“或什么东西(不够聪明就知道700 = 0700)。

于是我试着

String dbTime = String.valueOf(cursor.getInt(Globals.CLASSTIME)); 
String nextClassTime = (dbTime.length() < 4) ? "0" + dbTime : dbTime; 
DateTimeFormatter worldTime = DateTimeFormat.forPattern("HHmm"); 
DateTimeFormatter normalTime = DateTimeFormat.forPattern("hh:mm a"); 
LocalTime wt = worldTime.parseLocalTime(nextClassTime); 
String lt = normalTime.print(wt); 

但这打印“当地时间”为“07:00”

有没有得到它返回“7:00 AM”的方法吗?我想一个可能的解决方案是将我的数据库时间变成一个字符串,而不是一个整数,然后保存3位数字与前面的0,但我想不触及数据库,如果可能的话(这将需要编辑我的Web服务还有)

+1

尝试'“H:mm”'并检查。 – NINCOMPOOP

+0

或“嗯”,因为没有迹象表明有冒号。根据实施情况,它可能仍然无法做正确的事情。 (我知道野田时间会。) –

+0

H:mm a仍然是“10:00 AM”/“10:00 PM”吗?让我试试吧 编辑:作品! @TheNewIdiot你可以发布作为答案,所以我可以接受它,然后upvote Sickolas在SQL日期推荐? –

回答

2

@The新白痴是正确的,docs of Joda状态

较短的数字是零填充到这个数额。

所以“h”只能填充,而“hh”不能。

此外,你应该考虑使用一个长的存储时间,比int更多。 SQL日期也是一个不错的选择。

+0

感谢您的建议。如果@TheNewIdiot没有将他的答案作为解决方案发布,我会将其标记为已接受。我知道这是愚蠢的,但我无法找到Joda API指南中的ISO格式部分来记住H,HH,HH等之间的区别。 –

+0

接受了这一点,因为第一个人从未将他的答案作为答案发布。谢谢你们! –

相关问题