小工具知识网

当前位置: 首页 > 行业知识 > 【LeetCode】一周中的第几天+ 一年中的第几天

行业知识

【LeetCode】一周中的第几天+ 一年中的第几天

2026-10-29 19:06:34 来源:互联网转载

2023-12-30

文章目录

    • 一周中的第几天
          • 方法一:模拟
            • 思路
            • 步骤
            • 方法二:调用库函数
            • 方法三:调用库函数
            • 1154. 一年中的第几天
                  • 方法一:直接计算
                    • 思路:
                    • 方法二:调用库函数
                      • ���路

                        一周中的第几天

                        ​

                        • 提示:给出的日期一定是在 1971 到 2100 年之间的有效日期。
                          方法一:模拟
                          思路
                          • 1.可以根据1970年的最后一天(周四),计算出和输入日期间隔了几天(ans+之前的年份天数和+当前的月份天数和+输日的天数)

                          • 2.求出具体的天数之后进行取模,得到具体的星期

                            步骤

                            1.定义一个字符串类型的数组,大小为7,记录星期字典

                            定义一个int类型的数组,大小为12,记录12个月份分别对应的天数(闰年进行判断)

                            2.定义一个初始天数ans=4(从周四开始)

                            3.从1971年开始遍历,直到输入的年份,判断当前年是否为闰年,初始值加上对应的天数

                            4.遍历月份直到输入月份,二月的情况根据是否是闰年来加上额外的一天

                            5.最后加上输入的天数,所求之和取模

                                static String[] week =new String[] {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};    //每周对应的星期    static int[] nums = new int[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};    //每个月对应的天数    public String dayOfTheWeek(int day, int month, int year) {        int ans = 4;//初始值为4,从周四开始        for (int i = 1971; i  
                            方法二:调用库函数

                            1.使用LocalDate.of(year, month, day)创建了一个LocalDate对象date,表示给定的日期。LocalDate是Java 8中新增的日期类,用于处理日期相关操作。(Java8新增)

                            2.通过调用date.getDayOfWeek()方法获取该日期的星期几信息,getDayOfWeek()返回的是一个DayOfWeek枚举类型,表示星期几。

                            3.最后,通过调用getDisplayName(TextStyle.FULL_STANDALONE, Locale.ENGLISH)方法,将星期几信息以全名的形式返回,使用英语的地区设置。

                            import java.time.LocalDate;import java.time.format.TextStyle;import java.util.*;class Solution {    public String dayOfTheWeek2(int day, int month, int year) {        LocalDate date = LocalDate.of(year, month, day);        //创建了一个`LocalDate`对象`date`,表示给定的日期        return date.getDayOfWeek().getDisplayName(TextStyle.FULL_STANDALONE, Locale.ENGLISH);        //方法获取该日期的星期几信息        //将星期几信息以全名的形式返回,使用英语的地区设置    }
                            方法三:调用库函数

                            1.首先声明了一个私有的静态变量calendar,并调用其静态方法getInstance()获取一个默认时区的Calendar实例。然后声明了一个私有的静态变量weekFormat,它是一个SimpleDateFormat对象,用于格式化星期几信息。

                            2.使用set(year, month - 1, day)方法将calendar设置为给定日期。由于Calendar中的月份从0开始,所以需要将传入的month减去1

                            3.使用weekFormat.format(calendar.getTime())方法将calendar中的时间格式化为星期几的字符串,其中weekFormat是一个SimpleDateFormat对象,通过设置格式为"EEEE"来表示星期几的全名形式

                                private static final Calendar calendar = Calendar.getInstance();//获取一个默认时区的`Calendar`实例    private static final SimpleDateFormat weekFormat = new SimpleDateFormat("EEEE");//格式化星期几信息    public String dayOfTheWeek3(int day, int month, int year) {        calendar.set(year, month - 1, day);       // 将`calendar`设置为给定日期        return weekFormat.format(calendar.getTime());        //`calendar`中的时间格式化为星期几的字符串    }

                            1154. 一年中的第几天

                            方法一:直接计算
                            思路:

                            1.根据所给的字符串,分别截取出年月日的信息,转化成整数

                            2.根据当前年份,判断是否为闰年,是闰年:二月加1

                            3.之前月份天数之和,最后加上天数的信息

                             public int dayOfYear(String date) {        int year = Integer.parseInt(date.substring(0, 4));        int month = Integer.parseInt(date.substring(5, 7));        int day = Integer.parseInt(date.substring(8));        //调用substring分别截取出年月日的信息,转化为整数        int[] monthes = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};        //每个月份的天数        if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {            ++monthes[1];        }//如果当前的闰年,二月加1天(直接改变月份字典中的数)        int ans = 0;        for (int i = 0; i  
                            方法二:调用库函数
                            思路

                            1.指定日期字符串的格式

                            2.解析为 LocalDate 对象

                            3.返回该日期在其所属年份中的天数

                                private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");//定义了一个 DateTimeFormatter 对象,它指定了日期字符串的格式为 "yyyy-MM-dd"    public int dayOfYear2(String date) {        return LocalDate.parse(date, formatter).getDayOfYear();        //LocalDate.parse() 方法将日期字符串解析为 LocalDate 对象        //getDayOfYear() 方法则返回该日期在其所属年份中的天数    }

                            点击移步博客主页,欢迎光临~

上一篇:服务器的内存怎么选择?

下一篇:TNTAPP下载攻略,轻松获取APP,一键安装体验!