【LeetCode每日一题】1154. 一年中的第几天(直接计算+调用库函数)

2023-12-31 17:32:52

2023-12-31

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 < month - 1; ++i) {
            ans += monthes[i];//每个月天数之和
        }
        return ans + day;
    }
方法二:调用库函数
思路

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() 方法则返回该日期在其所属年份中的天数
    }

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

偷cyk的图

文章来源:https://blog.csdn.net/m0_64003319/article/details/135317484
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。