日期类问题
来源:互联网 发布:用友软件二次开发 编辑:程序博客网 时间:2024/06/08 09:03
基本数据结构
整理关于日期的基本数据结构,在C++中,没有日期类,所以要手动构造,关于日期的数据结构。
struct date{ int year; int month; int day;};
判断闰年
在日期中,一个重要的概念,就是闰年。
判断闰年的方法是:
年数能被4整除,但是不能被100整除,或者年数能不400整除。
bool is_leap_year(int year){ return (year%4==0&&(year%100!=0))||(year%400==0);}
计算两个日期的差值
规定一个原点时间,比如(0000年01月01日),计算两个特定日期之间的差时,只需要将他们与原点的日期天数差相减。
long calculateDays(date d){ int month[12]={31,28,31,30,31,30,31,31,30,31,30,31}; long count = 0; for (int i = 1000; i < d.year; ++i) { count+=365; if (is_leap_year(i)) count+=1; } for (int i = 1; i < d.month; ++i) { count+=month[i-1]; } if (is_leap_year(d.year)&&d.month>2) count+=1; count+=d.day; return count;}
上面计算了与1000年01月01日相差的天数
计算星期
给定一个日期,计算星期几。
方法是先计算出,与今天的时间差,然后用时间差与7取余数。
这里是先计算出固定日期是星期几,先前计算出,(1000年01月01日)是星期二。
string calculateWeek(date d){ string weeks[7]={"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; return weeks[(calculateDays(d)%7+2)%7];}
格式化输出
日期如果通过格式化输出,需要在前面补零。
printf("%04d-%02d-%02d\n",d.year,d.month,d.day);
0 0
- 日期类问题
- 日期类问题
- 日期类问题
- 1096 日期差值 (日期类问题)
- 日期类问题(1)
- 日期类问题(2)
- 日期类问题之月份牌问题
- 日期问题
- 日期问题
- 日期问题
- 日期问题
- 日期问题
- 日期问题
- 日期问题
- 日期问题
- 日期问题
- ssm 日期参数报400问题--自定义日期转换类
- 日期类问题与解决方法小结
- 【BZOJ 2160】拉拉队排练 回文树
- HTML5学习开始
- weixin4j--回复图片消息
- AOP那些学术概念—通知、增强处理连接点(JoinPoint)切面(Aspect)
- 优化篇-后端图片服务的“打怪升级”
- 日期类问题
- 关于GPS定位经纬度到谷歌(google)坐标以及百度(百度)坐标的转换c#源码
- ubuntu16.04安装教程
- 【Linux Shell编程】Part1(基础) Linux命令行
- docker容器centos6.4安装jre6
- 数据结构:栈的基本操作
- (基础)java中String与int的相互转换
- 263 Ugly Number
- bzoj3550[ONTAK2010] Vacation