gpt4 book ai didi

java - 只比较 Date 的时间部分

转载 作者:行者123 更新时间:2023-11-29 09:45:40 25 4
gpt4 key购买 nike

考虑以下代码,仅确定一个 Date 对象的时间分量是否在另一个 Date 对象的时间分量之前:

private boolean validStartStopTime( Date start, Date stop ) {
Calendar startCal = Calendar.getInstance();
Calendar stopCal = Calendar.getInstance();

startCal.clear();
stopCal.clear();

startCal.setTime( start );
stopCal.setTime( stop );

startCal.set( Calendar.YEAR, 2011 );
stopCal.set( Calendar.YEAR, 2011 );
startCal.set( Calendar.MONTH, 1 );
stopCal.set( Calendar.MONTH, 1 );
startCal.set( Calendar.DAY_OF_YEAR, 1 );
stopCal.set( Calendar.DAY_OF_YEAR, 1 );

return startCal.before( stopCal );
}

这会确保时间比较是正确的吗?是否有更好的选择(Joda 不是一个选择)?我认为这相当于将 Calendar 对象设置为当前日期/时间并手动复制小时、分钟和毫秒组件。您可以假设时区相同。

编辑:通过仅比较 Date 对象的时间部分来阐明我的意思。我的意思是,当具体看时间部分时,开始时间在停止时间之前。日期部分绝对无关紧要(在 start="Jan 2 20011 10AM"和 end="Jan 1 2011 11AM"完全没问题),如果我有选择,我会简单地使用只包含时间但 Date 对象是我得到的。我不想写一个 if-else 序列,这就是我采用上述方法的原因,但我欢迎更清洁/更好的方法。

最佳答案

您的代码应该可以正常工作。您还可以仅以从零开始的字符串表示法格式化时间组件,并按字典顺序比较它们:

public static boolean timeIsBefore(Date d1, Date d2) {
DateFormat f = new SimpleDateFormat("HH:mm:ss.SSS");
return f.format(d1).compareTo(f.format(d2)) < 0;
}

[编辑]

这是假设日期具有相同的时区偏移量。如果不是,您必须事先手动调整它们(或作为此功能的一部分)。

关于java - 只比较 Date 的时间部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6988713/

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