0

是否可以使用 joda 时间将 3 位时间转换为 HH:mm 格式?我试过以下

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 AM”

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

4

1 回答 1

2

@The New Idiot 是对的,Joda 的文档指出

较短的数字被零填充到这个数量。

所以“h”只应该被填充,而“hh”不会。

此外,您应该考虑使用 long 来存储时间,而不是 int。SQL Date 也是一个不错的选择。

于 2013-06-12T05:16:30.033 回答