0

以下に示す値を持つ長い値があります。

例えば

timeInLong = 1000 (which means 10:00 AM)
timeInLong = 1337 (which means 01:37 PM)

上記のタイプの値を変換し、時刻を 10:00AM と 01:37PM のstring形式で取得するスマートな方法が必要です。

誰かがこれを行う方法を教えてもらえますか?

4

6 に答える 6

4

コード -

Long timeInLong = 1000l;
SimpleDateFormat dateFormat = new SimpleDateFormat("HHmm");
Date date = dateFormat.parse(Long.toString(timeInLong));
System.out.println(new SimpleDateFormat("hh:mm a").format(date));

結果 -

午前10時

于 2013-08-21T07:17:22.170 に答える
1

試す:

SimpleDateFormat readerFormat = "HHmm";
SimpleDateFormat writerFormat = "hh:mma";

Date date = readerFormat.parse(Long.toString(timeInLong));
String toPrint = writerFormat.format(date);
于 2013-08-21T07:17:32.330 に答える
1

私はこのようなことをします:

SimpleDateFormat formatA = new SimpleDateFormat("hhmm");
SimpleDateFormat formatB = new SimpleDateFormat("hh:mm a");
Date intermediate = formatA.parse(String.valueOf(1337));
String result = formatB.format(intermediate);
于 2013-08-21T07:21:11.470 に答える
1
    int timeInLong = 1337;
    Calendar c = Calendar.getInstance();
    c.set(Calendar.MINUTE, timeInLong % 100);
    c.set(Calendar.HOUR_OF_DAY, timeInLong / 100);
    System.out.println(new SimpleDateFormat("HH:mm a", Locale.US).format(c.getTime()));
于 2013-08-21T07:29:30.727 に答える
0

簡単すぎるようですが、次はどうでしょうか。

int hours = timeInLong / 100;
int minutes = timeInLong % 100;
boolean isPM = false;

if (hours > 12) {
   isPM = true
} 

if (hours > 13) {
   hours -= 12;
}
String result = String.format("%02d:%02d %s", hours, minutes, (isPM ? "PM" : "AM"));

私は何か見落としてますか?

于 2013-08-21T07:17:30.297 に答える
0

SimpleDateFormat のインポートを避けたい場合は、代替の効率的なワンライナー:

String toTimeString(long time) {
    return ((time < 1300) ? time / 100 : time / 100 - 12)
         + ":" + time % 100
         + ((time < 1200) ? " AM" : " PM");
}
于 2013-08-21T07:29:12.870 に答える