Java 如何使用joda time将3位数的24小时制转换为12小时制?
是否可以使用joda time将3位时间转换为HH:mm a格式?我试过以下方法Java 如何使用joda time将3位数的24小时制转换为12小时制?,java,android,datetime,Java,Android,Datetime,是否可以使用joda time将3位时间转换为HH:mm a格式?我试过以下方法 int databaseTime = cursor.getInt(TIME); DateTimeFormatter worldTime = DateTimeFormat.forPattern("HHmm"); String localTime = worldTime.parseDateTime(databaseTime); 这对于1000以上的数据库中的任何时间都非常有效,但是如果数据库超时为100-900(01
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);
stringdbtime=String.valueOf(cursor.getInt(Globals.CLASSTIME));
字符串nextClassTime=(dbTime.length()<4)?“0”+dbTime:dbTime;
DateTimeFormatter worldTime=DateTimeFormat.forPattern(“HHmm”);
DateTimeFormatter normalTime=DateTimeFormat.forPattern(“hh:mm a”);
LocalTime wt=worldTime.parseLocalTime(nextClassTime);
字符串lt=normalTime.print(wt);
但这会将“当地时间”打印为“07:00 AM”
有没有办法让它返回“上午7:00”?我想一个可能的解决方案是将我的数据库时间转换成字符串,而不是整数,然后用前面的0保存3位数的时间,但如果可能的话,我不想碰数据库(这也需要编辑我的Web服务)@新的白痴是对的,状态是 较短的数字将被零填充到此数量 因此,只应填充“h”,而不填充“hh”
此外,你应该考虑使用一个很长的存储时间,超过INT.SQL日期也是一个不错的选择。
尝试<代码>“H:MM”/代码>和“检查”或“HMM”,因为没有迹象表明有冒号。不过,根据实现情况,它可能仍然无法做正确的事情。(我知道野田佳彦时间会。)H:mm a还会解释“上午10:00”/“晚上10:00”吗?让我试试编辑:很好@那么,你能不能发布一个答案,这样我就可以接受它,然后在SQL日期向Snicolas投票推荐?谢谢你的推荐。如果@TheNewIdiot不将他的答案作为解决方案发布,我会将你的答案标记为已接受。我知道这很愚蠢,但我在Joda API指南中找不到ISO格式部分来记住H、hh、hh等之间的区别。我接受了这一点,因为第一个人从未将他的答案作为答案发布。谢谢大家!!