【问题标题】:How to find sundays between to dates without using any library [closed]如何在不使用任何库的情况下找到日期之间的星期天 [关闭]
【发布时间】:2022-01-24 18:24:38
【问题描述】:

你好,我有一个作业,我不知道该怎么做

我必须找到从 1990 年到 2000 年之间的月份 firstday 的日期

【问题讨论】:

  • 您应该创建一个函数来检查给定日期的星期几。那么您可以简单地将其评估为星期日并在 1/1/1900 和 31/12/2000 之间循环。
  • 我怎样才能做到?我不能使用任何日期或日历库,所以我无法找到给定日期的哪一天。
  • 你应该数一数。从 1900 年 1 月 1 日到给定日期已过去的天数。假设 x 天过去了。现在你知道那是 1900 年 1 月 1 日星期一。初始化 String[] day {"Monday", "Tuesday", ........."Sunday"}。现在 day[x%7] 将为您提供所需的日期。
  • 你的意思是我需要数你说数数的日子?
  • 欢迎来到 StackOverflow。这不是一个问题。这是本网站没有的编码服务的要求。您可能想访问tour 并了解how to ask a question。进行一些研究,分享一些代码并在遇到问题时提出具体问题。

标签: java date


【解决方案1】:
class DayFinder {
public static void main(String[] args) {
    //Note that if you enter a date below year 1901 you will get error
    String entereddate1 = "01-01-1990";
    String entereddate2 = "01-01-2022";
    
    int date1 = Integer.parseInt(entereddate1.substring(0,2));
    int month1 = Integer.parseInt(entereddate1.substring(3,5));
    int year1 = Integer.parseInt(entereddate1.substring(6,10));

    int date2 = Integer.parseInt(entereddate2.substring(0,2));
    int month2 = Integer.parseInt(entereddate2.substring(3,5));
    int year2 = Integer.parseInt(entereddate2.substring(6,10));
    
    for(int year = year1; year <= year2; year++)
        for(int month = month1; month <= 12; month++)
            if(getDay(1,month,year).equals("Sunday"))
                System.out.println("01-"+month+"-"+year+" is Sunday");
}

private static String getDay(int date, int month, int year) {

    String[] days_name = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
    //Cumulative sum of days
    int[] month_days = {0,31,59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
    int days = (year - 1900-1) * 365 + month_days[month-1] + date + findLeapYears(year);

    return days_name[days%7];
}

//This find the number of leap of years from 1900 upto the year that is passed.
private static int findLeapYears(int year) {
    int leap_years = 0;
    for(int i = 1900; i <= year; i++) {
        if( ((i%4 == 0)  && (i%100 != 0)) || (i%400 == 0))
            leap_years += 1;
    }
    return leap_years;
}
}```

【讨论】:

  • 是的,感谢您的关注,但这并不是我所需要的。因为你首先使用了 java.lang 库,而且这段代码不是原始的。而且我还需要显示我找到的日期:01.08.2021 我不需要写日期我必须显示日期
  • 等等。 java.lang 库被隐式导入到所有程序中
  • @Murat 这正是它的作用。
  • 关于这段代码不是原始的,这甚至可以在Java 1中使用
  • 但是我执行它时看不到日期。我刚刚看到“星期六”字符串。它必须需要告诉我第一天是星期天的月份和年份
猜你喜欢
  • 1970-01-01
  • 2020-02-11
  • 1970-01-01
  • 2017-12-17
  • 2022-01-25
  • 2022-10-02
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多