我正在尝试与日期进行比较。我已经找到了一些关于此的主题,但它对我不起作用,我不知道为什么。例如,我尝试使用“compareTo、after、before”之类的方法进行比较,但它不起作用。我能做什么?我收到compareTo(java.lang.String)
字符串中的错误无法应用于(java.util.Date)
. 我能做什么?我想从类 EvenimentRecurent 开始进行修改。
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
class Eveniment {
private Date dataInceput, dataSfarsit;
private String nume;
public Eveniment() {
}
public Eveniment(String dataInceput, String dataSfarsit, String nume) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
this.dataInceput = format.parse(dataInceput);
this.dataSfarsit = format.parse(dataSfarsit);
} catch (Exception e) {
System.out.println("Data nu este in formatul cerut!");
}
this.nume = nume;
}
public Date getDataInceput() {
return dataInceput;
}
public Date getDataSfarsit() {
return dataSfarsit;
}
public String getNume() {
return nume;
}
}
class EvenimentRecurent extends Eveniment {
private Date dataP;
public int numarOre;
public EvenimentRecurent(String dataInceput, String dataSfarsit, String nume, int numarOre){
super(dataInceput,dataSfarsit,nume);
this.numarOre=numarOre;
}
private static final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:s");
public String urmatorulEveniment(String dataP){
Date neww;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
this.dataP = format.parse(dataP);
} catch (Exception e) {
System.out.println("Data nu este in formatul cerut!");
}
Calendar c = Calendar.getInstance();
c.setTime(this.dataP);
while(dataP.compareTo(getDataSfarsit()))
c.add(Calendar.HOUR, numarOre);
Date currentDatePlusOne = c.getTime();
String strDate = dateFormat.format(currentDatePlusOne);
return strDate;
}
}
public class Main {
public static void main(String[] args) {
EvenimentRecurent er = new EvenimentRecurent("2019-03-09 22:46:00", "2019-03-09 23:00:00", "Scris probleme", 24);
System.out.println(er.urmatorulEveniment("2019-04-19 22:46:23"));
// 2019-04-20 22:46:23
}
}
问题出在这个声明中
dataP.compareTo(getDataSfarsit())
首先,将dataP更改为this.dataP,因此语句将是:dataP.compareTo(getDataSfarsit())
其次,你应该知道 java.util.Date 类的 compareTo 方法返回一个 int,这就是 javadoc 所说的:“如果参数 Date 等于这个 Date,则值 0;如果这个值小于 0日期在日期参数之前;如果此日期在日期参数之后,则值大于 0。 ”在这种情况下,您的条件应如下所示:
while(this.dataP.compareTo(getDataSfarsit())==0)
就是这样,希望这会有所帮助:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句