`
happysoul
  • 浏览: 398159 次
  • 性别: 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日期时间判断函数

    里面有字符是否符时间期的两个函数,一个纯日期,还有一个加了时分秒。经测试可以用的

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

    大家一定遇到过这样的情况,有两个日期对象,然后需要判断他们是否相等,下面来说下判断的方法

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

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

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

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

    通用表单验证脚本.js

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

    javascript 判断两个日期之差的示例代码

    日期差我们需要像php中一样把如2015-08-30这种转换成秒之后再利用两个日期的秒数进行相减之后再加起判断就可以了,如果判断日期相等就简单多了在文章最后有例子说明。 例子1,日期之差函数 function better_time...

    4种方法在java中,对日期时间的比较.docx

    java.util.Date提供了在Java中比较两个日期的经典方法compareTo()。...1.如果两个日期相等,则返回值为0。 2.如果Date在date参数之后,则返回值大于0。 3.如果Date在date参数之前,则返回值小于0。

    java8日期工具类大全

    例如,可以实现方法来比较两个日期的大小,检查一个日期是否在另一个日期之前、之后或相等。这样,开发人员可以方便地进行日期的比较和判断,并根据需要执行相应的逻辑。 日期格式验证:日期工具类可以提供方法来...

    编写类MyDate

    //当前对象与另一个对象比较,如果两个对象的年月日均相等,则返回true,反之返回false 5.编写TestMyDate.java,在main方法中对MyDate类的各个方法进行测试 6.按照编程规范为MyDate.java编写规范的代码 7.按照java ...

    ios开发记录

    //判断两个字符串是否相等,不能使用==,使用等号是判断两个对象是否是一个对象,也就是是否是一个内存地址。 //判断字符串的内容是否相同应该使用nsstring的isEqualToString:方法 //在低版本的时候,如果直接点击...

    详解在java中进行日期时间比较的4种方法

    主要介绍了详解在java中进行日期时间比较的4种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    两行代码轻松搞定JavaScript日期验证

    其实这个技巧也很简单,通过实例化 Date 对象来生成一个合法的日期,再去对比年月日是否相等,以验证日期是否合法。  var originalYear = 2016; var originalMonth = 12; var originalDay = 32; var date = new ...

    SQL语句。。。。。。。。。

    ISDATE() --函数判断所给定的表达式是否为合理日期 ISNULL(, <replacement_value> ) --函数将表达式中的NULL 值用指定值替换 ISNUMERIC() --函数判断所给定的表达式是否为合理的数值 NEWID() --函数返回一个...

    commons-lang

    4.DateUtils/CalendarUtils 主要提供了对日期的操作,包括日期加减,日期格式化,日期比较,一定时间范围内日期的迭代等等 5.StopWatch 提供秒表的计时,暂停等功能 6. EqualsBuilder/HashCodeBuilder提供了方便的方法...

    学生信息管理系统

    对Student类重载"=="运算符和"="运算符,"=="运算符判断两个Student类对象的id属性是否相等;"="运算符实现Student类对象的赋值操作。 对给出的程序源代码要给出各部分的详细注释。 自己根据能力及...

    c/c++ 人事管理系统

    (3) 对People类重载”==”运算符和”=”运算符,”==”运算符判断两个People类对象的id属性是否相等;”=”运算符实现People类对象的赋值操作. (4) 在D:\\ graduate.txt中存储了所有graduate的信息;在D:\\...

    道破天机股指走向实时研判曲线

    本曲线和股指分时曲线相似但不是相等,正是他们的不同之处却能告诉我们一些重要信息。比如2010年3月2日,银行板块疯狂做多,但该曲线几乎全天在零轴以下运行,显示广大机构机构群体的看空做空思潮,次日,股指收阳而...

    淘金筛(数据王国的“BaiDu”超级搜索过滤)

    相等、不等、大于、大于或等于、小于、小于或等于、两者之间、列举多个(相等) 3、模糊匹配 字段列下拉框选择一项,操作类型下拉框选择包含操作,直接在过滤输入中输入包含的数字或文本或日期即可查找过滤。...

    语言程序设计课后习题答案

    语句if(x == 3)首先判断x的值是否为3,若相等条件表达式的值为ture,否则为false。 2-15 什么叫做作用域?什么叫做局部变量?什么叫做全局变量,如何使用全局变量? 解: 作用域是一个标识符在程序正文中有效的...

Global site tag (gtag.js) - Google Analytics