0

joda time を使用して、3 桁の時刻を HH:mm 形式に変換することは可能ですか? 私は次のことを試しました

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

これは、1000 を超えるデータベースではいつでもうまく機能しますが、データベースのタイムアウトが 100 から 900 (0100 から 0900) の場合、「70 は 1 時間ではありません」などのエラーでエラーになります (十分にスマートではありません)。 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」に戻す方法はありますか?考えられる解決策の 1 つは、データベースの時刻を整数ではなく文字列に変換し、3 桁の時刻を前の 0 で保存することだと思いますが、可能であればデータベースには触れたくありません (これには Web サービスの編集が必要になります)。同じように)

4

1 に答える 1

2

@The New Idiotは正しいです.Jodaのドキュメントは次のように述べています

短い数値は、この量までゼロで埋められます。

したがって、「h」はパディングする必要がありますが、「hh」はパディングしません。

また、int よりも long を格納時間に使用することを検討する必要があります。SQL Date も良い選択です。

于 2013-06-12T05:16:30.033 に答える