2014-12-03 57 views
0

我正在讀取文件中的時間戳數據,並且這些時間戳我希望稍後在Timer scheduler中使用它們來根據時間戳記觸發一些事件。時間戳格式有點像這樣0.012999999999,它們是字符串類型,我用Long.parseLong將它轉換爲long。我嘗試了下面的代碼,但在運行時我收到下面的錯誤,在我看來它是關於時間戳的格式化,但我不知道如何處理它。讀取計時器任務中的時間戳時出錯

代碼

static TimerTask timedTask = new TimerTask() { 

    @Override 
    public void run() { 
     // TODO Auto-generated method stub 

    } 
}; 

Timer timer = new Timer(); 
    timer.schedule(timedTask, Long.parseLong(logfile.getFileHash().get(1).getTimeStamp())); 

錯誤

Exception in thread "file processing" java.lang.NumberFormatException: For input string: 
"0.012999999999" 
at java.lang.NumberFormatException.forInputString(Unknown Source) 
at java.lang.Long.parseLong(Unknown Source) 
at java.lang.Long.parseLong(Unknown Source) 
at com.example.File_IO_00.File_IO.processFile(File_IO.java:77) 
at com.example.File_IO_00.File_IO.access$1(File_IO.java:69) 
at com.example.File_IO_00.File_IO$1.run(File_IO.java:20) 
at java.lang.Thread.run(Unknown Source) 
+0

其中是時間戳格式從 – 2014-12-03 11:44:37

回答

0

Long是整數類型,即0.012999999999不是有效的值。您應該使用Float.parseFloat()Double.parseDouble()

+0

好吧,但現在,計時器任務獲取長參數作爲第二個參數? – user2121 2014-12-03 11:53:59

+0

您可以使用'Math.round(Double.parseDouble(..))'將其四捨五入爲Long值。但是,這很可能不是你想要的,因爲它會給你提供的字符串0。最有可能的是,時間戳字符串以秒爲單位,Timer以毫秒爲單位,因此您可以使用'Math.round(1000 * Double.parseDouble(..))'將其轉換。 – Petter 2014-12-03 12:00:42