Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查日期是否与年份无关_Java_Date_Calendar_Java 6_Date Comparison - Fatal编程技术网

Java 检查日期是否与年份无关

Java 检查日期是否与年份无关,java,date,calendar,java-6,date-comparison,Java,Date,Calendar,Java 6,Date Comparison,我使用JavaSE1.6,我需要比较两个日期并检查它们是否相同。此支票需要独立于年度 例如,我需要确定今天是否是某人的生日,并且我需要在未来几年中重用这些代码。 因此,我需要执行检查,而不是在年份上,甚至不是在闰年发布的一年中的哪一天,但我只能依靠月份的哪一天和月份编号本身 我输入的数据,是人的生日,它是在Java类中的日期 javaSE 1.6有什么方法可以帮助我吗 我检查了课程日期和日历,但到目前为止我找不到任何提示来解决我的问题。我找到了在课程日历中调用月份和日期的方法 这是我的解决方案,

我使用JavaSE1.6,我需要比较两个日期并检查它们是否相同。此支票需要独立于年度

例如,我需要确定今天是否是某人的生日,并且我需要在未来几年中重用这些代码。 因此,我需要执行检查,而不是在年份上,甚至不是在闰年发布的一年中的哪一天,但我只能依靠月份的哪一天和月份编号本身

我输入的数据,是人的生日,它是在Java类中的日期

javaSE 1.6有什么方法可以帮助我吗


我检查了课程日期和日历,但到目前为止我找不到任何提示来解决我的问题。

我找到了在课程日历中调用月份和日期的方法

这是我的解决方案,我没有找到关于这个主题的任何其他示例,所以我将粘贴,也许将来可以帮助别人

如果您有更时尚的解决方案,请告诉我。 我很高兴知道:

    // date of the B-day 31st December
    int month = Calendar.DECEMBER;
    int date = 31;

    boolean status = false; 

    // Class Date already filled with the date we wanna check.
    Date beginDate;

    Calendar c = Calendar.getInstance();
    c.setTime(beginDate); 
    int dayOfMonthToCompare = c.get(Calendar.DAY_OF_MONTH);
    int monthToCompare = c.get(Calendar.MONTH);

    //perform check on day and Month
    if(dayOfMonthToCompare == date && monthToCompare == month){
        status = true;
    }
三百一十个后场 类是你需要的,它是一个没有年份的日期,或者相反,是一个月和一个月中的一天。生日和其他需要记住的日子是它使用的主要例子

像这样:

    Date birthday = // ...
    Date today = new Date();
    if (toMonthDay(today).equals(toMonthDay(birthday))) {
        System.out.println("It’s her birthday");
    } else {
        System.out.println("It’s not her birthday");
    }
在Java6上,您需要使用Java.time的后端口,即Java6和Java7的后端口

我正在犹豫使用ZoneId.systemDefault来使用JVM的时区设置进行转换。一方面,日期通常假定为这个时区;另一方面,这是脆弱的,因为可以随时从程序的其他部分或运行在同一JVM中的其他程序更改设置。如果您知道得更清楚,请务必给出一个时区,例如ZoneId.ofAmerica/Adak

如果使用Java 8或更高版本以及内置的Java.time,转换会稍微简单一些:

    ZonedDateTime dateTime = utilDate.toInstant().atZone(ZoneId.systemDefault());
    return MonthDay.from(dateTime);
链接 解释如何使用java.time。 ,其中首次描述了java.time。 ,java.timeto JSR-310的java 6和7 Three-Ten的后端口。 ,Android版Three Ten Backport ,解释得非常透彻。
日历上没有任何东西可以帮助您确定月份和月份的哪一天?谢谢您的提示,我以前没有找到它,我正在寻找一种专门的方法。感谢您的帮助。仅供参考,像、和java.text.simpleDataFormat这样麻烦的旧日期时间类现在被java 8和更高版本中内置的类所取代。请参见.FYI,像、和java.text.simpleDataFormat这样的麻烦的旧日期时间类现在被内置在Java8和更高版本中的类所取代。看见
    ZonedDateTime dateTime = utilDate.toInstant().atZone(ZoneId.systemDefault());
    return MonthDay.from(dateTime);