2013-02-11 111 views
4

我有一個ArrayList包括幾個時間戳,目的是找到ArrayList的第一個和最後一個元素的差異。如何找到java中兩個時間戳的區別?

String a = ArrayList.get(0); 
String b = ArrayList.get(ArrayList.size()-1); 
long diff = b.getTime() - a.getTime(); 

我也將類型轉換爲int,但它仍然給我一個錯誤The method getTime is undefined for the type String

附加信息:

我有一個A類,其包括

String timeStamp = new SimpleDateFormat("ss S").format(new Date()); 

並且存在具有方法private void dialogDuration(String timeStamp)

dialogueDuration方法包括類B:

String a = timeSt.get(0); // timeSt is an ArrayList which includes all the timeStamps 
String b = timeSt.get(timeSt.size()-1); // This method aims finding the difference of the first and the last elements(timestamps) of the ArrayList (in seconds) 

long i = Long.parseLong(a); 
long j = Long.parseLong(b); 

long diff = j.getTime()- i.getTime(); 

System.out.println("a: " +i); 
System.out.println("b: " +j); 

而一個條件是stat EMENT(String timeStamp = new SimpleDateFormat("ss S").format(new Date());)類A.不會被改變和B類的一個對象類A,使得它調用dialogueDuration(timeStamp)方法,並傳遞時間標記的值,以類B

我的問題是此減法創建不起作用,它會給出錯誤cannot invoke getTime() method on the primitive type long。它也給int和String類型提供同樣的錯誤?

非常感謝!

+0

好吧那你*希望*'的getTime()'做,什麼時候調用一個字符串?你的'ArrayList'由什麼*確切*組成? (爲什麼你顯然有一個名爲'ArrayList'的變量?這太令人困惑了。) – 2013-02-11 10:19:33

+0

我期望getTime()幫助我找到第一個和最後一個時間戳的差別。但顯然它不起作用於字符串,但它確實不能用整數類型工作。我的Arraylist只包含時間戳。我的變量實際上並沒有被稱爲Arraylist.i這樣寫就是爲了使它顯而易見,它是一個數組列表。 – user2052015 2013-02-11 11:03:02

+0

您需要顯示*實際數據*的樣本。只是說他們是字符串並不是非常有用 - 字符串是什麼格式? – 2013-02-11 11:04:58

回答

10

也許是這樣的:

SimpleDateFormat dateFormat = new SimpleDateFormat("ss S"); 
Date firstParsedDate = dateFormat.parse(a); 
Date secondParsedDate = dateFormat.parse(b); 
long diff = secondParsedDate.getTime() - firstParsedDate.getTime(); 
+0

我不能做到這一點,因爲: 我有一個A類,其包括 [字符串的timeStamp =新的SimpleDateFormat( 「SS S」)格式(新日期()); ] 並且存在具有方法[private void dialogDuration(String timeStamp)]的類B] 並且dialogueDuration方法包括: String a = timeSt.get(0); \t // timeSt是一個包含所有時間戳的ArrayList String b = timeSt.get(timeSt.size() - 1); //此方法的目的是找出ArrayList的第一個元素和最後一個元素(時間戳)的差異(以秒爲單位) – user2052015 2013-02-11 11:57:10

+0

long i = Long.parseLong(a); \t \t \t long j = Long.parseLong(b); \t \t \t \t \t \t長的diff = j.getTime() - i.getTime(); \t \t \t \t \t \t System.out.println(「a:」+ i); \t \t \t System.out.println(「b:」+ j); – user2052015 2013-02-11 12:00:44

+0

並且一個條件是語句([String timeStamp = new SimpleDateFormat(「ss S」).format(new Date());])不會在類A中更改。類B中的對象在類A中創建因此它調用對話持續時間(timeStamp)方法並將timeStamps的值傳遞給B類。 我的問題是這種減法不起作用,它給出了一個錯誤(不能在基本類型long上調用getTime()方法)。它也給int和String類型提供同樣的錯誤? – user2052015 2013-02-11 12:02:18

0

您應該將ArrayList x設置爲ArrayList<TimeStamp> x。隨後,您的方法get(int)將返回類型爲TimeStamp(而不是類型String)的對象。在TimeStamp您可以調用getTime()

順便問一下,你真的需要java.sql.TimeStamp嗎?也許簡單的DateCalendar更容易也更合適。

3

假設你已經在你的ArrayList時間戳對象或日期對象,你可以這樣做:

Timestamp a = timeSt.get(0); 

Timestamp b = timeSt.get(timeSt.size()-1); 

long diff = b.getTime() - a.getTime(); 
+0

不幸的是我沒有在我的數組列表中的對象。還有另一類包括 String timeStamp = new SimpleDateFormat(「ss S」)。格式(新日期()); 我通過這部分獲得時間戳。我將時間戳值傳遞給另一個類的數組列表,並通過創建一個新方法來進行計算。因此,如何添加此對象,因爲Date()在另一個類中??? – user2052015 2013-02-11 11:04:31

+0

所以,你不能在String對象上調用getTime,因爲它不是這個類的成員。你必須解析字符串並以一種可以長時間投射的方式對其進行格式化。 。 – 2013-02-11 11:14:21

相關問題