我知道我的两个日期是相等的,因为我可以使用accessor方法获取日期、月份和年份,然后将它们作为一个字符串打印出来。当我将这两个日期作为字符串打印出来时,它们打印出来的结果是相等的。我尝试过用equals方法使用几个不同的字符串和日期实现,但都没有成功。我只在比较日期的字符串为“1/1/2000”时出现问题。这是我的方法。我的toString()方法将日期写为字符串“01/01/2000”
如果 equals()
方法的日期相同,则应返回 false,但一个在长显示中,另一个在短显示中,即“1990 年 1 月 1 日”和“01/01/1990”应返回 false 值(如果通过等于方法
进行比较)。但是,日期(如“1/1/2000”和“01/01/2000”)在通过 equals()
方法进行比较时,应返回 true 值。
这个Date
类是为我所在的java类编写的,以了解面向对象程序及其类的工作方式。
默认日期构造器-日期()
public Date() {
setDate(2000, 01, 01);
}
日期(字符串日期字符串)
public Date(String dateStr) {
setDate(dateStr);
}
设置日期(字符串日期)
public void setDate(String dateStr) {
int slashCount = 0;
for (int i = 0; i < dateStr.length(); i++) {
if(dateStr.charAt(i) == '/') {
slashCount++;
}
}
if (slashCount == 2) {
if (dateStr.indexOf('/') >= 0) {
int index = dateStr.indexOf('/');
String dd = dateStr.substring(index+1, dateStr.length());
if (dd.substring(1, dd.length()).lastIndexOf('/') >= 0 ) {
int index2 = dd.lastIndexOf('/');
String yy = dd.substring(index2+1, dd.length());
String mm = dateStr.substring(0, index);
dd = dd.substring(0, index2);
yy = yy.substring(0, yy.length());
//System.out.println(mm + "\n" + dd + "\n" + yy );
int y = Integer.parseInt(yy);
int d = Integer.parseInt(dd);
int m = Integer.parseInt(mm);
setYear(y);
setMonth(m);
setDay(d);
//System.out.println("get year returns " + getYear());
//System.out.println("get month returns " + getMonth());
//System.out.println("get day returns " + getDay());
}
}
} else {
throw new IllegalArgumentException();
}
}
等于(其他对象)
public boolean equals(Object other) {
if (other instanceof Date) {
Date that = (Date) other;
return this.day == that.day
&& this.month == that.month
&& this.year == that.year;
} else if (other instanceof String) {
Date that = new Date((String) other);
String thatString = that.toString();
String thisString = this.toString();
return thatString.equals(thisString);
}
return false;
}
到字符串()
public String toString() {
if (isShortDisplay()) {
return String.format("%02d/%02d/%04d", month, day, year);
} else {
return String.format(monthString(month) + " %d, %04d", day, year);
}
}
日期测试.java
String date = "1/1/2000";
Date dstring = new Date(date);
Date d1 = new Date();
System.out.println(d1);
if (!(d1.toString().equals("1/1/2000"))) {
System.out.println("Error 1");
System.out.println();
System.out.println("This day (d1) day = " + d1.getDay());
System.out.println("This month (d1) month = " + d1.getMonth());
System.out.println("This year (d1) year = " + d1.getYear());
System.out.println("This date (d1) string = " + d1.toString());
System.out.println();
System.out.println("That (dstring) day = " + dstring.getDay());
System.out.println("That (dstring) month = " + dstring.getMonth());
System.out.println("That (dstring) year = " + dstring.getYear());
System.out.println("That date (dstring) string = " + dstring.toString());
System.out.println(d1.toString().equals(dstring.toString()));
System.out.println(d1.equals(date));
System.out.println(d1.toString().toString());
System.out.println(d1.toString());
System.out.println(dstring);
}
日期测试.java控制台
01/01/2000
Error 1
This day (d1) day = 1
This month (d1) month = 1
This year (d1) year = 2000
This date (d1) string = 01/01/2000
That (dstring) day = 1
That (dstring) month = 1
That (dstring) year = 2000
That date (dstring) string = 01/01/2000
true
true
01/01/2000
01/01/2000
01/01/2000
我使用以下内容作为测试...
Date date1 = new Date("01/01/2000");
Date date2 = new Date("1/1/2000");
System.out.println(date1);
System.out.println(date1.equals(date2));
System.out.println(date2.equals(date1));
System.out.println(date1.equals("1/1/2000"));
System.out.println(date1.equals("01/01/2000"));
System.out.println(date2.equals("1/1/2000"));
System.out.println(date2.equals("01/01/2000"));
我得到了以下输出。。。
01/01/2000
true
true
true
true
true
true
所以,除非你愿意提供一个实际可运行的例子来证明你的问题,否则我不确定还能说什么。。。
本文向大家介绍python根据日期返回星期几的方法,包括了python根据日期返回星期几的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python根据日期返回星期几的方法。分享给大家供大家参考。具体如下: 这个函数给定日期,输出星期几,至于0是星期一还是星期天,这和时区有关,反正我这里是0表示星期一 如果要输出当天是星期几,执行下面的代码 输出结果为: 星期一 希望本文所述对大家的
问题内容: 这是我的SQL Server表 这似乎很容易做到,但我不知道为什么会被卡住。我只想为每个id选择max(date)和该max(date)处的值。我想忽略相对于每个ID而言不是max(date)的所有其他日期。 这是我希望表格看起来像的样子: 我尝试通过使用max(date)进行分组,但没有进行任何分组。我不确定自己在做什么错。在此先感谢您的帮助! 问题答案: 您可以使用以下内容: 观看
将两个日期与方法之前的日期进行比较时,如果日期相似,则返回false,如下所示: 日期1:2012年12月18日星期二00:00:00 GMT 02:00 方法在这种情况下总是返回false,这对我没有意义(换句话说不适用于我的情况)。我想检查日期(日/月/年)是否等于今天的日期(日/月/年)?
本文向大家介绍Java中的日期类,包括了Java中的日期类的使用技巧和注意事项,需要的朋友参考一下 Java提供了Java中可用的Date类。util程序包,此类封装了当前日期和时间。 Date类支持两个构造函数,如下表所示。 序号 构造函数与说明 1 Date() 此构造函数使用当前日期和时间初始化对象。 2 Date(long millisec) 此构造函数接受一个参数,该参数等于自1970年
问题内容: 如果您不相信我,这是我在Eclipse中使用的一些调试表达式: 我在函数中使用它,它在开始和结束日期之间返回一个随机日期: 任何想法如何使它返回正确的Unix时间以供将来使用? 谢谢! 问题答案: 如果要使用超出32位整数日期范围的日期,请使用PHP的dateTime对象
问题内容: 预期输入: 预期产量: 问题答案: 您还可以查看DatePeriod类: 这应该使您具有DateTime对象的数组。 进行迭代