java - 如何使用 joda-time 将 3 位数 24 小时时间转换为 12 小时制?

标签 java android datetime

是否可以使用 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 位数字时间,但如果可能的话,我不想接触数据库(这需要编辑我的网络服务)以及)

最佳答案

@新白痴是对的,docs of Joda说明

Shorter numbers are zero-padded to this amount.

因此,仅应填充“h”,而不应填充“hh”。

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

关于java - 如何使用 joda-time 将 3 位数 24 小时时间转换为 12 小时制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17058045/

相关文章:

java - Spring Batch 流程控制

java - 在Android Studio中指定发送通知的时间延迟?

arrays - 如何比较数组中的时间?

r - 使用 R 的 ggplot2 定义日期时间的第一个轴断点

javascript - MIT APP Inventor 打开时出错。如何解决?

java - 适用于 Android 的 OData4j : ClassNotFoundException for XmlInputFactory

java - 如何在其包含的外壳内滚动 ZEST 图表

Android OpenCV 在 Optimus black (GB) 中对空白屏幕进行示例

Android GUI - 如何强制按钮到下一行?

javascript - 如何将小时数添加到 Date 对象?