2014-04-04 22 views
0
String qtm = "00:02:00"; 
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); 
java.util.Date d = null; 
try 
{ 
    d = formatter.parse(qtm);} 
catch (java.text.ParseException e) { 
    System.err.println("Error: " + e.getMessage()); 
} 
System.out.println(d); 

這段代碼給我: -Java代碼來分配兩個分鐘就有一時間間隔

週四1月1 00:02:00北京時間1970年

在我的計劃

我想爲roundrobin算法保留2分鐘的時間量程,我該怎麼做?請幫幫我。 當我給

long curr= d.getTime(); 
system.out.println(d); 

它給人的輸出: -

-19500000

請告訴我如何給僅有2分鐘爲間隔,並將其分配給一個變量...

+0

你想在哪裏使用這個量子? – sanbhat

+0

你不能檢查那些毫秒值並運行它嗎? – ambarox

+0

那毫秒值我得到了ws錯誤。 – sb15

回答

0

目前的問題是,您的SimpleDateFormat是在您當地的時區,而Date.getTime()以UTC爲單位給出了自Unix時代以來的毫秒數。

可以解決這一問題爲:

SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); 
formatter.setTimeZone(TimeZone.getTimeZone("Etc/UTC")); 

...然後像以前一樣使用getTime()

理想情況下,最好使用Joda Time或Java 8 java.time包,它們都有一個Duration類型來表示這種類型的值。喬達時間有一個PeriodFormatter可以用來解析這個Period,並將其轉換爲Duration,這是有點冗長,誠然。我不看到直解析到Duration爲其中任何一種方式......

+0

謝謝你的代碼和解釋:)其工作正常:) – sb15

0

如果你只是想2分鐘,然後爲什麼不去爲毫秒當量(120000L)? 如果您計劃在預定的線程池執行程序中使用它,則可以使用(2,TimeUnit.Seconds)。 恕我直言,解決方案實際上取決於你想用它的目的。