两个日期比较

用户11178707

我正在尝试与日期进行比较。我已经找到了一些关于此的主题,但它对我不起作用,我不知道为什么。例如,我尝试使用“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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章