我有一个包含多个时间戳的ArrayList
,目的是找出ArrayList
的第一个元素和最后一个元素的差异。
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)
的类B
dialogueDuration
方法包括:
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);
一个条件是语句(String timeStamp = new SimpleDateFormat("ss S").format(new Date());
)不会在类A中更改。在类A创建了一个类B的对象,以便它调用dialogueDuration(timeStamp)
方法并将时间戳的值传递给类B。
我的问题是这个减法不起作用,它给出了一个错误cannot invoke getTime() method on the primitive type long
。对于int和String类型,它也会给出相同类型的错误?
提前感谢!
可能是这样的:
SimpleDateFormat dateFormat = new SimpleDateFormat("ss S");
Date firstParsedDate = dateFormat.parse(a);
Date secondParsedDate = dateFormat.parse(b);
long diff = secondParsedDate.getTime() - firstParsedDate.getTime();
假设您的ArrayList中有时间戳对象或日期对象,您可以执行以下操作:
Timestamp a = timeSt.get(0);
Timestamp b = timeSt.get(timeSt.size()-1);
long diff = b.getTime() - a.getTime();
您可以使用以下两种方法计算差异(也可以通过添加额外的if语句或使用switch case将上述方法修改为返回差异为"毫秒"、"天"、"月"等):
private Long calculateDifference(String date1, String date2, String value) {
Timestamp date_1 = stringToTimestamp(date1);
Timestamp date_2 = stringToTimestamp(date2);
long milliseconds = date_1.getTime() - date_2.getTime();
if (value.equals("second"))
return milliseconds / 1000;
if (value.equals("minute"))
return milliseconds / 1000 / 60;
if (value.equals("hours"))
return milliseconds / 1000 / 3600;
else
return new Long(999999999);
}
private Timestamp stringToTimestamp(String date) {
try {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date parsedDate = dateFormat.parse(date);
return new Timestamp(parsedDate.getTime());
} catch (Exception e) {
return null;
}
}
例如:
calculateDifference("2021-10-20 10:00:01", "2021-10-20 10:15:01", "minute");
将返回"-15"
或
calculateDifference("2021-10-20 12:00:01", "2021-10-20 10:15:01", "minute");
将返回"105"
您应该将ArrayList x
设置为ArrayList<TimeStamp> x
。随后,方法get(int)
将返回TimeStamp
类型的对象(而不是String
类型)。在TimeStamp
上,您可以调用getTime()
。
顺便问一下,你真的需要java.sql.TimeStamp
吗?也许一个简单的CCD_ 17或CCD_。