SORU
27 Ocak 2012, Cuma


Milisaniye dönüştürme "hh:mm:ss " formatında?

Kafam karıştı. this iplik tökezletici sonra format hh:mm:ss Bu bir geri sayım sayacı biçimini anlamaya çalıştım.

Burada benim girişimi

//hh:mm:ss
String.format("d:d:d", 
    TimeUnit.MILLISECONDS.toHours(millis),
    TimeUnit.MILLISECONDS.toMinutes(millis) - 
    TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
    TimeUnit.MILLISECONDS.toSeconds(millis) - 
    TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));   

3600000ms gibi bir değer çalıştığımda, 01:00:00 olmalıdır beri yanlış olan 01:59:00, anlıyorum. Belli ki bir şey benim mantığım yanlış bir şey yok, ama şu an ne olduğunu göremiyorum!

Herkes yardımcı olabilir?

Düzenle -

Tamir ettim. İşte hh:mm:ss format - biçim milisaniye doğru

//hh:mm:ss
String.format("d:d:d", 
    TimeUnit.MILLISECONDS.toHours(millis),
    TimeUnit.MILLISECONDS.toMinutes(millis) - 
    TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
    TimeUnit.MILLISECONDS.toSeconds(millis) - 
    TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))));

Sorun TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)) Bu oldu. Bunun yerine TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)) Bu olmalıydı.

CEVAP
27 Ocak 2012, Cuma


Sendingerçektenkapat:

String.format("d:d:d", 
TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis) -  
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)), // The change is in this line
TimeUnit.MILLISECONDS.toSeconds(millis) - 
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));   

Millisseconds için saat kullanarak dönüştürme olduğunudakikayerinesaat.

BTW, TimeUnit kullanımınız API :) severim

İşte bazı test kod:

public static void main(String[] args) throws ParseException {
    long millis = 3600000;
    String hms = String.format("d:d:d", TimeUnit.MILLISECONDS.toHours(millis),
            TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
            TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
    System.out.println(hms);
}

Çıkış:

01:00:00

Kodum yukarıda büyük ölçüde çıkarma yerine: modüllü bir bölüm kullanarak basitleştirilmiş olabilir fark ettim

String hms = String.format("d:d:d", TimeUnit.MILLISECONDS.toHours(millis),
    TimeUnit.MILLISECONDS.toMinutes(millis) % TimeUnit.HOURS.toMinutes(1),
    TimeUnit.MILLISECONDS.toSeconds(millis) % TimeUnit.MINUTES.toSeconds(1));

Hala TimeUnit büyü kullanarak tüm değerler için API ve verir tam olarak aynı çıktı.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ExcelIsFun

    ExcelIsFun

    16 ŞUBAT 2008
  • Nickcidious

    Nickcidious

    6 HAZİRAN 2011
  • sghaff1

    sghaff1

    23 Mart 2009