2012-09-17 15 views
5

मुझे मिलीसेकंड से सेकंड और मिनट प्रारूपित करने की आवश्यकता है। मैं उलटी गिनती का उपयोग कर रहा हूँ। क्या किसी को भीड़ मिलती है? मैंने जोदा समय देखा। लेकिन मुझे बस एक प्रारूप है इसलिए मेरे पास 1:05 है और 1: 5 नहीं है। धन्यवादस्वरूपण सेकंड और मिनट

private void walk() { 
    new CountDownTimer(15000, 1000) { 
     @Override 
     public void onFinish() { 
      lapCounter++; 
      lapNumber.setText("Lap Number: " + lapCounter); 
      run(); 
     } 

     @Override 
     public void onTick(long millisUntilFinished) { 
      text.setText("Time left:" + millisUntilFinished/1000); 
     } 
    }.start(); 
} 
+0

प्रयोग करेंगे आप पहले से ही SimpleNumberFormat में देखा है? वैकल्पिक रूप से आप अपने पूर्णांक के बाईं ओर हमेशा '0' जोड़ सकते हैं यदि यह 10 से कम है। – BlackVegetable

+0

मुझे यकीन नहीं है कि यह आपकी पूरी ज़रूरतों को पूरा करेगा या नहीं, लेकिन यह एक नजर [PrettyTime] (http://ocpsoft.org/prettytime/) – MadProgrammer

उत्तर

26

आप का उपयोग कर इसे कर सकता है बनाने के लिए ऐसा करने का एक वास्तविक आलसी तरीका मानक तिथि स्वरूपण वर्ग, लेकिन यह थोड़ा भारी वजन हो सकता है। मैं सिर्फ String.format विधि का उपयोग करता हूं। उदाहरण के लिए:

int minutes = time/(60 * 1000); 
int seconds = (time/1000) % 60; 
String str = String.format("%d:%02d", minutes, seconds); 
+0

बढ़िया! वह वही था जो मैं ढूंढ रहा था! मुझे यकीन नहीं है कि मैं "% d:% 02d" को समझता हूं, मैंने इसे स्वयं ही करने की कोशिश की और इसे सही नहीं मिला। धन्यवाद! –

+1

% प्रतिस्थापन को इंगित करता है, 0 का अर्थ शून्य-पैड संख्या है, 2 का मतलब चौड़ाई 2 है, और डी का मतलब दशमलव संख्या के रूप में प्रदर्शित होता है। यहां प्रलेखन है: http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html –

6

जब तक आप जानते हैं के रूप में आप अधिक से अधिक 60 मिनट के लिए नहीं होगा है सिर्फ एक तारीख और का उपयोग SimpleDateFormat

public void onTick(long millisUntilFinished) { 
    SimpleDateFormat dateFormat = new SimpleDateFormat("mm:ss"); 
    dateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); 
    Date date = new Date(millisUntilFinished); 
    text.setText("Time left:" + dateFormat.format(date)); 
} 
0

मैंने अपाचे कॉमन्स स्टॉपवॉच क्लास का उपयोग किया। इसकी toString विधि का डिफ़ॉल्ट आउटपुट ISO8601-like, घंटे: मिनट: सेकंड्स। मिलिसेकंड है।

Example of Apache StopWatch

2

मैं

org.apache.commons.lang.time.DurationFormatUtils.formatDuration(millisUntilFinished, "mm:ss")