`
happysoul
  • 浏览: 404172 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

日期相等的判断

    博客分类:
  • JAVA
阅读更多
万恶的日期判断啊...
使用
d1.getTime()==d2.getTime();的方式进行日期的判断
(前提是new Date(xxxxxxx) 的时候已经指定了日期的年月日时分秒)
没想到循环100次得结果却是2-5次返回的值是false
仔细跟了d1.getTime()的数据值,每次最后毫秒数都是不同的,难道jdk对毫秒的值在未指定的时候返回的是当前的毫秒数?没办法,毫秒的时间实在是不好跟踪了...

public static Boolean compareDate(Date d1,Date d2){
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	String s1 = sdf.format(d1);
	String s2 = sdf.format(d2);
	if(s1.equals(s2))return true;
	else return false;
}


只好用字符串的方式进行比较了!对这个东西估计将毫秒也赋值为0的话应该没有问题,不过对于精确度只需要 年:月:日 时 的需求小循环范围内只好进行字符串比较了!

如果你看到这里还有好的解决方法希望不吝赐教!
1
2
分享到:
评论
7 楼 lubo1980 2015-12-04  
确实Calendar getTime是精确到毫秒的,这样添加如下解决:
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
6 楼 lubo1980 2015-12-04  
其实增加这样一句就可以解决了
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);

Calendar getTime确实是精确到毫秒的
5 楼 blackstreet 2011-06-10  
现在项目哪有不加apache-lang jar 的
4 楼 happysoul 2011-06-07  
blackstreet 写道

import org.apache.commons.lang.time.DateUtils;
import java.util.Calendar;
	/**
	 * dateEquals(Date d1 , Date d2 , Calendar.SECOND) 精确到秒
	 * dateEquals(Date d1 , Date d2 , Calendar.DATE) 精确到天
	 * 
	 * @param d1
	 * @param d2
	 * @param 
	 * @return
	 */
	private static boolean dateEquals(Date d1 , Date d2 , int Calendar){
		Date date1 = DateUtils.truncate(d1, Calendar );
		Date date2 = DateUtils.truncate(d2, Calendar );
		return date1.equals(date2);
	}

apache的时间工具包不好找啊 不过转成了Date类型去判断个人觉得还是会有问题!
3 楼 happysoul 2011-06-07  
frejus 写道
Date 類有一個compareTo 方法

前面写错了我用的还不是new Date(xxxxx)的方式创建的,用的是
public static Date getFullDate(Integer year, Integer month, Integer date, Integer hourOfDay, Integer minute, Integer second) {
	Calendar cal = Calendar.getInstance();
	cal.set(year, month-1, date, hourOfDay, minute, second);
	return cal.getTime();
}

这里我只是使用了 年月日和小时 分钟和秒都是0
结果就是不灵啊~~ 1000次平均出现2-6次不相等的情况
2 楼 blackstreet 2011-06-07  

import org.apache.commons.lang.time.DateUtils;
import java.util.Calendar;
	/**
	 * dateEquals(Date d1 , Date d2 , Calendar.SECOND) 精确到秒
	 * dateEquals(Date d1 , Date d2 , Calendar.DATE) 精确到天
	 * 
	 * @param d1
	 * @param d2
	 * @param 
	 * @return
	 */
	private static boolean dateEquals(Date d1 , Date d2 , int Calendar){
		Date date1 = DateUtils.truncate(d1, Calendar );
		Date date2 = DateUtils.truncate(d2, Calendar );
		return date1.equals(date2);
	}
1 楼 frejus 2011-06-07  
Date 類有一個compareTo 方法

相关推荐

    oracle日期时间判断函数

    针对标题"oracle日期时间判断函数"和描述中提到的内容,我们可以深入探讨两个关键的函数,它们主要用于判断字符串是否可以转换为合法的日期时间格式。 1. TO_DATE函数: TO_DATE是Oracle中用于将字符串转换为日期...

    js判断两个日期是否相等的方法

    为了判断两个日期是否相等,我们需要比较它们的时间戳,时间戳是自1970年1月1日(UTC时间)起所经过的毫秒数,是日期的内部表示方法。JavaScript提供了几个方法来获取时间戳: 1. `getTime()`方法:这个方法返回一...

    js验证日期格式,比较日期大小,判断两日期年月是否相同借鉴.pdf

    以上三个函数提供了JavaScript中处理日期的基本能力:比较日期大小、验证日期格式以及判断两个日期是否在同一个月份。这些函数可以很好地帮助开发者在Web应用中进行日期相关的逻辑处理,从而提高应用程序的功能性和...

    Java编程输入两个年月日,(1)判断两个日期是否相同,并且将相差的天数显示出来;(2)将日期后推或前推N天,并将该日期输出。

    - 使用`DateType`类来表示日期,并通过`bool`方法判断两个日期是否相同。 - 通过`ZongTian`方法计算每个日期距离某个参考点(通常是公元0年1月1日)的总天数,从而计算出两日期间的天数差。 ### 2. `DateType` 类的...

    一行代码判断两个日期是否在同一周

    本文将讨论如何使用C#语言高效地判断两个日期是否在同一周,针对给定的代码进行分析,并提供两种更准确、可读性更强的方法。 首先,让我们回顾一下原始的代码段: ```csharp private bool IsInSameWeek(DateTime ...

    日期的工具类UtilDate日期计算比较润年获取转化判断

    返回值为负数表示第一个日期早于第二个,零表示相等,正数表示第一个日期晚于第二个。 3. **润年判断**: 判断一个年份是否为润年,一般规则是能被4整除但不能被100整除,或者能被400整除。在Java中,我们可以创建...

    一个微小的247B的工具类用于深度判断值是否相等

    标题提到的"一个微小的247B的工具类用于深度判断值是否相等"就是针对这一需求设计的高效解决方案。 这个工具类的独特之处在于它能够处理各种类型的值,包括基本类型(如字符串、数字、布尔值)以及复杂类型(如函数...

    日期比较大小

    如果所有部分都相等,那么这两个日期就是同一天。 在Delphi编程环境中,我们可以使用TDateTime类型来表示日期和时间。TDateTime是一个双精度浮点数,包含了从公元前4713年1月1日午夜(协调世界时)到公元9999年12月...

    时间日期的比较大小

    在编程中,经常需要对时间或日期进行比较,以便进行各种操作,如判断事件发生的先后顺序、筛选数据等。在Java等编程语言中,日期的比较可以通过内置的方法或自定义函数来实现。针对题目中的"时间日期的比较大小"这个...

    比较date类型 判断两个日期的早晚

    如果两个日期相等,则返回`true`;否则返回`false`。 **示例代码:** ```java import java.util.Date; public class DateComparison { public static void main(String[] args) { Date dateA = new Date(); ...

    js 判断一组日期是否是连续的简单实例

    在JavaScript中,判断一组日期是否连续是一项常见的任务,特别是在处理时间序列数据或日历应用时。本实例将探讨如何使用JavaScript有效地实现这一功能,避免因日期格式、月份变化、闰年等因素导致的判断错误。 首先...

    通用表单验证脚本.js

    判断一般字符串的长度 判断密码的长度 ...判断字符是合法的日期 判断字符是合法的日期 判断字符是否是合法的电话021-55555555,(021) 判断字符是否是由str里的字符组成 判断字符是否是合法的身份证号

    天空教室作业 写一个日期类Date

    (c) void IsLeap():判断年份是否是闰年 (d) void addOneday():加上一天后的日期 二、圆类 Circle 的设计和实现 在 C++ 程序设计中,圆类 Circle 是一个非常重要的类,它可以用来表示圆的半径、面积和周长。...

    java 日期帮助类

    - `isEqual(Date date1, Date date2)`:判断两个日期是否相等。 3. **日期加减操作**: - `addDays(Date date, int days)`:在日期上增加或减少指定天数。 - `addMonths(Date date, int months)`:在日期上增加...

    回文判断 JAVA实现

    具体实现时,可以定义一个方法,接收字符串的首尾两个字符,如果它们相等并且剩余部分也是回文,则整个字符串是回文。这里需要特别注意递归终止条件,即字符串为空或只剩一个字符时,都是回文。 4. **GUI编程**:...

    Java 8的18个常用日期处理.doc

    System.out.println("两个日期相等"); }else{ System.out.println("两个日期不相等"); } } ``` Java 8 的日期处理 API 提供了更加简洁、明确和线程安全的解决方案,帮助开发者更好地处理日期和时间相关问题。

    日期的javascript验证

    如果它们相等,则输入的日期是今天的日期: ```javascript function isToday(date) { var today = new Date(); return date.getDate() === today.getDate() && date.getMonth() === today.getMonth() && date....

    java语言日期处理大全

    `equals()`, `before()`, `after()`是`Date`对象的比较方法,可以判断两个日期是否相等或前后关系,例如`d1.before(d2)`或`d1.after(d2)`。 9. **日期的其他操作**: `java.time`包(Java 8及以上版本)引入了新...

    一波JavaScript日期推断脚本分享_.docx

    如果两个日期对象的毫秒值相等,则表示它们代表的是同一个时间点。例如,`x.getTime() == y.getTime()`用于比较`x`和`y`是否为同一日期。 2. **判断日期是否在两个日期之间**: 这个脚本主要用于确定一个日期是否...

Global site tag (gtag.js) - Google Analytics