gpt4 book ai didi

java - 为什么日期比较失败?

转载 作者:行者123 更新时间:2023-11-30 10:48:02 24 4
gpt4 key购买 nike

我想检查我的事件剂量是否重叠。我以日期格式保存了开始时间和结束时间。我的尝试是通过比较来检查日期是否重叠。但它有时会失败。

大多数它在晚上 11 点到凌晨 12 点值和中午 12:00 到凌晨 1:00 值失败。有时也会在另一个时间段之间失败。

因为我将时间段存储为 ,

日期自 -- 3 月 14 日星期一 23:00:00dateto -- 3 月 14 日星期一 00:00:00

现在我尝试将时间段添加为:

checkFromDate -- 3 月 14 日星期一 12:14:00checkToDate -- 3 月 14 日星期一 11:14:00

它返回真。显示事件存在,但它不存在。

日期格式为:

        df = new SimpleDateFormat("E MMM dd HH:mm:ss zzzz yyyy");

日期格式有问题吗??

检查重叠函数

public void checkOverlappingEvents()
{

List<EventData> checkOverlappingEvents = new ArrayList<>();

EventTableHelper eventTableHelper = new EventTableHelper(AddEventActivity.this);


switch (dayOfWeek)
{
case "Mon":


checkOverlappingEvents = eventTableHelper.getAllEvents("Mon");


for (EventData e : checkOverlappingEvents)
{

df = new SimpleDateFormat("E MMM dd HH:mm:ss zzzz yyyy");

Date checkFromDate = new Date();
Date checkToDate = new Date();


try {

checkFromDate = df.parse(e.getFromDate());
checkToDate = df.parse(e.getToDate());

} catch (ParseException ex) {

}


// int startHours = datefrom.getHours();
// int endHours = dateto.getMinutes();

// String startTime = checkFromDate.getHours() + ":" + checkFromDate.getMinutes();
// String endTime = checkToDate.getHours() + ":" + checkToDate.getMinutes();

// String startDate = datefrom.getHours() + ":" + datefrom.getMinutes();
// String endDate = dateto.getHours() + ":" + dateto.getMinutes();

if(datefrom.compareTo(checkToDate) == checkFromDate.compareTo(dateto))
{
overlapEvents = true;
count ++;
Log.d("count",String.valueOf(count));

}

}

这没有用,所以我想只比较日期的小时和分钟。我的尝试是从日期中获取小时和分钟并比较它们,它在评论中。但它需要一些其他逻辑。

谁能帮我解决这个问题?

编辑:

我再次测试时,我发现如果条件返回 true,那么另一个时间段的第二次也显示 true,尽管它不是 true。

像现在一样,我有一个下午 12:50 到 1:50 的 Activity ,我尝试添加另一个 Activity 时间 12:00pm - 1:00 pm 返回 true,count 为 1。这是正确的。

但是,如果我再次尝试更改时间而不返回,不刷新 Activity ,我尝试将时间更改为中​​午 12:00 至中午 12:30 为此它也返回 true,计数为 1,因为这不应该是 true这个时间段没有事件。

如果我再次返回如果我尝试将 12:00pm 到 12:30pm 的事件添加到它返回 false,它就成功添加了。现在我不知道这是怎么回事?

我想我需要刷新存储比较事件的列表。我该怎么做,我应该在哪里做?

谢谢。

最佳答案

也许我误解了这个问题,但是时间 00:00:00 是在 23:00:00 之前。我对其进行了测试以确保:

SimpleDateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss");
System.out.println(df.parse("Mon mar 14 23:00:00").getTime()); // 6296400000
System.out.println(df.parse("Mon mar 14 00:00:00").getTime()); // 6213600000

因此,日期 Mon mar 14 12:14:00 -- Mon mar 14 11:14:00 将存在于 Mon mar 14 00:00:00 -- Mon mar 14 23:00:00 之间。

所以代码可能是正确的,只是你的测试有点困惑。

关于java - 为什么日期比较失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35980551/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com