栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

335、一年中的第几天

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

335、一年中的第几天

给你一个字符串 date ,按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。请你计算并返回该日期是当年的第几天。

通常情况下,我们认为 1 月 1 日是每年的第 1 天,1 月 2 日是每年的第 2 天,依此类推。每个月的天数与现行公元纪年法(格里高利历)一致。

示例 1:

输入:date = "2019-01-09"
输出:9
示例 2:

输入:date = "2019-02-10"
输出:41
示例 3:

输入:date = "2003-03-01"
输出:60
示例 4:

输入:date = "2004-03-01"
输出:61
 

提示:

date.length == 10
date[4] == date[7] == '-',其他的 date[i] 都是数字
date 表示的范围从 1900 年 1 月 1 日至 2019 年 12 月 31 日
通过次数45,123提交次数69,577

来源:力扣(LeetCode)
链接:力扣
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

public class DayOfTheYear {

    

    public int getDay(Date date) {

        if (date == null) {

            return 0;

        }

        Calendar cal = Calendar.getInstance();

        cal.setTime(date);

        return cal.get(Calendar.DAY_OF_YEAR);

    }

     

    

    public int dayOfYear(String date) {

        int year=Integer.parseInt(date.subSequence(0, 4)+"");

        int month=Integer.parseInt(date.subSequence(5, 7)+"");

        int day=Integer.parseInt(date.subSequence(8, 10)+"");

        //闰年分为普通闰年和世纪闰年,其判断方法为:公历年份是4的倍数,且不是100的倍数,为普通闰年。

        //公历年份是整百数,且必须是400的倍数才是世纪闰年。

        //归结起来就是通常说的:四年一闰;百年不闰,四百年再闰。

        //闰年是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的。

        boolean isRunNian = (year%4==0 && year%100!=0) || (year%400==0);

        //第0,占位,清晰点

        int[] monthDay =new int [] {0,31,28,31,30,31,30,31,31,30,31,30,31};

        if(isRunNian) {

            monthDay[2]=29;

        }

        int theDay =0;

        for(int currentMonth=1;currentMonth

            theDay+= monthDay[currentMonth];

        }

        theDay+= day;

        return theDay;

    }

}

public class DayOfTheYearTest {

    @Test

    public void test() {

        DayOfTheYear year = new DayOfTheYear();

        final String day1 = "2021-01-01";

        final String day365 = "2021-12-31";

        final String day366 = "2004-12-31";

        final String day366of2 = "2000-12-31";

        Assert.assertEquals(year.getDay(parseDateYmd(day1)),1);

        Assert.assertEquals(year.getDay(parseDateYmd(day365)),365);

        Assert.assertEquals(year.getDay(parseDateYmd(day366)),366);

        Assert.assertEquals(year.getDay(parseDateYmd(day366of2)),366);

         

        Assert.assertEquals(year.dayOfYear(day1),1);

        Assert.assertEquals(year.dayOfYear(day365),365);

        Assert.assertEquals(year.dayOfYear(day366),366);

        Assert.assertEquals(year.dayOfYear(day366of2),366);

    }

     

    public static Date parseDateYmd(String dateStr) {

        return getDateFromStr(dateStr, "yyyy-MM-dd");

    }

     

    public static Date getDateFromStr(String dateStr, String dateFormat) {

        Date date = null;

        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);

        try {

            date = sdf.parse(dateStr);

        } catch (ParseException e) {

        }

        return date;

    }

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/704860.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号