1154. 一年中的第几天
给你一个字符串 date ,按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。请你计算并返回该日期是当年的第几天。
通常情况下,我们认为 1 月 1 日是每年的第 1 天,1 月 2 日是每年的第 2 天,依此类推。每个月的天数与现行公元纪年法(格里高利历)一致。
public class Solution { public int DayOfYear(string date) { string[] time = date.Split('-'); int ans = 0; int[] days = {0,31,28,31,30,31,30,31,31,30,31,30,31}; for(int i=0; i<(int.Parse(time[1])); i++) { ans += days[i]; } ans += int.Parse(time[2]); if( IsLeap(int.Parse(time[0])) && (int.Parse(time[1]))>2) { ans++; } return ans; } public bool IsLeap(int year) { if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) { return true; } return false; } }
这题还真是要素齐全
不过难得冬至来了道简单题
首先是数据读取
我这里直接拆分了导致后面每个都要强转
看了题解才想起来直接截取就行了
然后是年份
年份要分为平年和闰年
平年里还要注意世纪年如2000
因为2月的天数是会变化的所以要判断闰年
在这里复习一下判断闰年的标准
如果是世纪年那么判断能否被400整除,能就是闰年
如果是一般年份判断能被4整除并且不能被100整除
然后判断完天数加1
我们直接用个数组记下来一般年份的天数
假如是2012 – 03 – 09
那么天数就得是1月的天数+2月的天数+9天+闰年多的1天
所以遍历到3-1月就可以了