1185. 一周中的第几天『简单』

摘要:
//月份的天数//整数除法后的值是元素String[]strs={“Thursday”;year;month;}else(i==2){//在2月份,判断当前年份是否为闰年if(isLeapYear(year)){days+=29;}else{//其余月份加上31 days+=31;2020和1900if(year%4==0&amp。

题目来源于力扣(LeetCode

目录

一、题目

1185. 一周中的第几天

题目相关标签:数组

1185. 一周中的第几天『简单』第1张

提示:

  • 给出的日期一定是在 19712100 年之间的有效日期。

二、解题思路

  1. 1971年1月1日为星期五为基准,最终计算得到给定日期与 1971年1月1日之间的天数

  2. 索引即天数 % 7,,返回 strs 字符串数组中对应索引上的字符串元素

三、代码实现

public static String dayOfTheWeek(int day, int month, int year) {
    int days = day;  // 月份的天数
    // 整除后的值即为数组索引上的元素
    String[] strs = {"Thursday", "Friday", "Saturday", "Sunday", "Monday",
                     "Tuesday", "Wednesday"};
    // 从1971年开始相加日期,加到指定日期 - 1 的年份
    for (int i = 1971; i < year; i++) {
        if (isLeapYear(i)) {
            // 闰年时加365 + 1
            days += 366;
        } else {
            // 平年加365
            days += 365;
        }
    }
    // 计算当前年的月份天数,从1月份到指定月份 - 1
    for (int i = 1; i < month; i++) {
        // 4,6,9,11 月份时加 30 天
        if (i == 4 || i == 6 || i == 9 || i == 11) {
            days += 30;
        } else if (i == 2) {
            // 2 月份时判断当前年是否闰年
            if (isLeapYear(year)) {
                days += 29;
            } else {
                days += 28;
            }
        } else {
            // 其余月份加 31 天
            days += 31;
        }
    }
    // 结果为 1 时 Friday,为 0 时 Thursday
    return strs[days % 7];
}

// 判断年份是否闰年
public static boolean isLeapYear(int year) {
    // 年份能被4整除同时不能被100整除,2020 与 1900
    if (year % 4 == 0 && year % 100 != 0) {
        return true;
    }
    // 年份能被400整除,2000 与 1900
    if (year % 400 == 0) {
        return true;
    }
    return false;
}

四、执行用时

1185. 一周中的第几天『简单』第2张

五、部分测试用例

public static void main(String[] args) {
    int day = 31, month = 8, year = 2019;  // output: "Saturday"
//    int day = 18, month = 7, year = 1999;  // output: "Sunday"
//    int day = 15, month = 8, year = 1993;  // output: "Sunday"

    String result = dayOfTheWeek(day, month, year);
    System.out.println(result);
}

免责声明:文章转载自《1185. 一周中的第几天『简单』》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Charles抓包配置、常见问题和解决方法Jenkins集成Allure报告详解-亲历噢下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

标准控件(二)——Calendar

Calendar     日程控件 属性     Borderstyle             边框样式     DayNameFormat           日标头的文本格式     FirstDayOfWeek              NextPrevFormat          月导航按钮的格式   方法     DayRender()  ...

My97日期控件My97DatePicker使用(备忘)

前言: 最近老是找不到资料,痛之又痛的情况下,决定好好将所有涉及到的东西通通做个备忘记录。 参考网址: 1、http://www.my97.net/dp/demo/index.htm 2、http://www.mysuc.com/test/My97DatePicker/#m246 使用备忘—— 日期:2010-10-30 版本:4.7 功能:两个日期文本框...

Mysql 日期时间类型详解

MySQL 中有多种数据类型可以用于日期和时间的表示,不同的版本可能有所差异,表3-2 中列出了MySQL 5.0 中所支持的日期和时间类型。 这些数据类型的主要区别如下: * 如果要用来表示年月日,通常用DATE 来表示。 * 如果要用来表示年月日时分秒,通常用DATETIME 表示。 * 如果只用来表示时分秒,通常用TIME 来表示。 * 如...

js中获取当前系统时间

使用var myDate = new Date();//获取系统当前时间 获取特定格式的时间: 1 myDate.getYear(); //获取当前年份(2位) 2 myDate.getFullYear(); //获取完整的年份(4位,1970-????) 3 myDate.getMonth(); //获取当前月份(0-11,0代表1月) 4...

mysql cast函数

CAST函数语法规则是:Cast(字段名 as 转换的类型 ),其中类型可以为: CHAR[(N)] 字符型 DATE 日期型DATETIME 日期和时间型DECIMAL float型SIGNED intTIME 时间型 实例1: 表table1 date:2015-11-03 15:31:26 select cast(date as signed)...

My97日历控件常用功能记录

My97相信大家都不陌生,应该是我所见过的最强大的一个日历控件了,最近的项目中也比较多地用到了此控件,而且项目中经常会有不同时间范围的需求,在此列出一些比较常用的日期范围格式的设置,尽管在My97的官方文档中有很详细的介绍,正是因为很详细所以查找起来不是很方便。 1 可以选择任何日期 <input id="txtDate" class="Wdate"...