【Matlab】把一年中的某一天(从1月1日起)换算成日期
2016-12-17 11:15
1946 查看
Doy2Date函数:
% Doy2Date: 把一年中的某一天(从1月1日起)换算成日期 % [month_of_doy, day_of_doy] = Doy2Date(year, doy) % 输入 % year : doy对应的年份 % doy : 一年中的第几天(从1月1日起) % 输出 % month_of_doy : doy对应的月 % day_of_doy : doy对应的日 % 算法思想:先判断闰年和平年,闰年2月29天,平年2月28天. % 每月天数依次累加,直到大于等于doy,即为doy所在月 % doy减去当前月份之前完整月份的天数就是当前月中的第几天. % author : TSC % time : 2016-12-17 % email : 292936085#qq.com(将#替换为@) function [month_of_doy, day_of_doy] = Doy2Date(year, doy) month1 = 31; month3 = 31; month5 = 31; month7 = 31; month8 = 31; month10 = 31; month12 = 31; month4 = 30; month6 = 30; month9 = 30; month11 = 30; % 先判断闰年和平年 % 非整百年数除以4,无余为闰年,整百年数除以400,无余为闰 if (0 ~= mod(year, 100) && 0 == mod(year, 4)) || 0 == mod(year, 400) month2 = 29; else month2 = 28; end % 合并所有月份 month_merge = []; for imonth = 1 : 12 month_merge = [month_merge, eval(strcat('month', num2str(imonth)))]; end for imonth = 1 : 12 if doy < 1 disp('doy的正确范围应该为1到365/366(平年365,闰年366)'); month_of_doy = NaN; day_of_doy = NaN; break; end % 每月天数依次累加,直到大于等于doy,i即为doy所在月 if sum(month_merge(1:imonth)) >= doy month_of_doy = imonth; days_before = sum(month_merge(1:imonth-1)); % doy减去当前月份之前完整月份的天数就是当前月中的第几天. day_of_doy = doy - days_before; break; elseif 12 == imonth disp('doy的正确范围应该为1到365/366(平年365,闰年366)'); month_of_doy = NaN; day_of_doy = NaN; break; end end
测试函数:
year = 2015; doy = 365; [month_of_doy, day_of_doy] = Doy2Date(year, doy)
注:未完全测试。
相关文章推荐
- [sql server] 问题总结10---SQL 日期转换 日期推算 增加或是减少一年或是一天 非常值得收藏
- 黑马程序员 测试题:编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,并且计算出是一年中的第几天
- 用户输入一个日期,计算时星期几,并计算时一年中的某一天,使用自定义方法判断
- JAVA获取日期时间加一年或加一月或加一天
- 【java】获取一年里某季、某月、某周的第一天及最后一天时间(日期工具类)
- 输入日期并判断这一天是这一年的第几天
- NYOJ_75 日期计算 (判断这一天是这一年中的第几天)
- SQL SERVER 2005中如何获取日期(一个月的最后一日、上个月第一天、最后一天、一年的第一日等等)
- 输入一个日期,求这一天是星期几,并且计算出是一年中的第几天
- 日期与时间处理二(给定一个年月日判断这一天是一年中的第几天)
- C#8—写一个测试标准身高体重的程序、输入日期年月日, 计算这一天是一年中的第几天(考虑闰年)
- 验证当前日期是否为一年中最后一天,否则,默认返回当前日期前一年的最后一天日期
- 编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,并且计算出是一年中的第几天
- 输入一个日期,格式如:2010 10 24 ,判断这一天是这一年中的第几天。
- 输入一个日期,算出这一天是这一年的第几天
- 黑马程序员---------------------编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期, * 程序计算这一天是星期几,并且计算出是一年中的第几天
- 黑马程序员—编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期, *程序计算这一天是星期几,并且计算出是一年中的第几天。 */
- Java日期加一天或加一月或加一年
- 【转】SQL SERVER 2005中如何获取日期(一个月的最后一日、上个月第一天、最后一天、一年的第一日等等)
- NYOJ_75 日期计算 (推断这一天是这一年中的第几天)