计算两个时间戳对象之间的差异java
问题描述:
问题是:我使用的标准从我的数据库中获取“startDate”和“endDate”的最大值。现在我必须找到数据库时间戳中这两个对象之间的区别。计算两个时间戳对象之间的差异java
有谁知道该怎么办?
taskTimes.java
public Object taskTimes() {
Session session = sessionFactory.openSession();
session.beginTransaction();
Criteria criteria = session.createCriteria(Task.class).setProjection(Projections.max("endDate"));
Object avgDate = (Object) criteria.uniqueResult();
Criteria criteria1 = session.createCriteria(Task.class).setProjection(Projections.max("startDate"));
Object avgDate1 = (Object) criteria1.uniqueResult();
System.out.println(avgDate);
System.out.println(avgDate1);
session.close();
return avgDate;
}
Task.java
@Entity
public class Task {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(nullable = false)
private int batch;
@Column
private java.sql.Timestamp startDate;
@Column
private java.sql.Timestamp endDate;
@ManyToOne
private Student student;
@ManyToOne
private Job job;
@OneToMany(mappedBy="task")
private List<Result> results;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
public Job getJob() {
return job;
}
public void setJob(Job job) {
this.job = job;
}
public List<Result> getResults() {
return results;
}
public void setResults(List<Result> results) {
this.results = results;
}
public Task(Long id, int batch, Timestamp startDate, Timestamp endDate, Student student, Job job,
List<Result> results) {
super();
this.id = id;
this.batch = batch;
this.startDate = startDate;
this.endDate = endDate;
this.student = student;
this.job = job;
this.results = results;
}
public java.sql.Timestamp getStartDate() {
return startDate;
}
public void setStartDate(java.sql.Timestamp startDate) {
this.startDate = startDate;
}
public java.sql.Timestamp getEndDate() {
return endDate;
}
public void setEndDate(java.sql.Timestamp endDate) {
this.endDate = endDate;
}
public Task() {
}
public int getBatch() {
return batch;
}
public void setBatch(int batch) {
this.batch = batch;
}
@Override
public String toString() {
return "Task [id=" + id;
}
答
据java.sql.Timestamp的API它提供了一个方法的getTime()。
返回此Timestamp对象表示的自1970年1月1日00:00:00 GMT以来的毫秒数。
要计算差异,您可以结合使用此方法和Math.abs
。
答
如果对象是TIMESTAMP类型,类型转换他们时间戳
Timestamp avgDateTs = (Timestamp)avgDate;
Timestamp avgDateTs1 = (Timestamp)avgDate1;
然后获得以毫秒为单位的时间。
long timeInMills = avgDateTs.getTime();
long timeInMills1 = avgDateTs1.getTime();
做一个毫秒值的差异,那会给你以毫秒为单位的差异。
然后,您可以除以1000以秒为单位获得差异。
long differenceInSecs = (timeInMills1-timeInMills)/1000;
'java.sql.Timestamp'继承自'java.util.Date'。计算两个Date对象之间的差异很简单。我建议你回去阅读Javadoc。 –
我无法从时间戳转换为日期 –
您可能无法从时间戳转换为java.util.Date,但应该可以从时间戳转换为java.sql.Date。 –