2013-03-22 24 views
1

我有一個字符串變量,其格式爲"HH:mm"。 可以說變量值是05:30。Android字符串變量(HH:mm)爲長變量毫秒

我將如何能夠從字符串獲取這些數字和計算:

(05 * 60 * 60 * 1000)+(30 * 60 * 1000),並放入一個新的長這個數字(毫秒)變量。

基本上我需要將字符串時間變量轉換爲毫秒長的變量。

回答

2

s含有感興趣的字符串。然後例如你可以說

String s = "5:30"; 
    Pattern p = Pattern.compile("(\\d+):(\\d+)"); 
    Matcher m = p.matcher(s); 
    if (m.matches()) { 
     int hrs = Integer.parseInt(m.group(1)); 
     int min = Integer.parseInt(m.group(2)); 
     long ms = (long) hrs * 60 * 60 * 1000 + min * 60 * 1000; 
     System.out.println("hrs="+hrs+" min="+min+" ms="+ms); 
    } else { 
     throw Exception("Bad time format"); 
    } 

對於它的價值,只有86,400,000一天毫秒,所以你不需要longint足夠大。

2

可以使用SimpleDateFormat

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); 
sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 

String inputString = yourTime + ":00.000"; //Added to string to make HH:mm:ss.SSS format 

Date date = sdf.parse("1970-01-01 " + inputString); 
System.out.println("in milliseconds: " + date.getTime());   
+0

以任何機會,你是左撇子?謝謝。 – Gene 2013-03-22 02:48:46

+0

@基因呃,我是右撇子。我可以問爲什麼你想知道嗎? – 2013-03-22 02:55:43

+0

我不是指任何不敬。一位朋友有一個理論認爲,左撇子和右撇子的人有着根本不同的看問題的方式。你的解決方案與我看待這個問題的方式相去甚遠,我不得不測試這個理論。我也是右撇子。猜猜我們不是一個證明......乾杯。 – Gene 2013-03-22 03:01:09

1
public static void main(String[] args) throws IOException { 
    SimpleDateFormat simpleDateFormate = new SimpleDateFormat("HH:mm"); 
    simpleDateFormate.setTimeZone(TimeZone.getTimeZone("UTC")); 
    String inputString = "05:30"; 
    Date date = null; 
    try { 
     date = simpleDateFormate.parse(inputString); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    System.out.println("in millSeconds: " + date.getTime()); 
    long yourvar=date.getTime(); 
} 

使用SimpleDateFormat