计算给定日期的周历(得到某天是周几)
来源:互联网 发布:js判断密码长度 编辑:程序博客网 时间:2024/06/08 09:31
方法1.运用标准库提供的ctime头文件中的struct tm结构
本方法比较好记,思路如下:
1. 获得以tm结构表示的当前日期;
2. 将tm结构体中的年月日换成待转换的年月日;
3. 调用mktime函数将新的tm结构转化为time_t形式的时间表示;
在第3步的过程中tm结构中的tm_wday就会更新为对应待转换年月日的周历了。
#include <iostream>#include <ctime>using namespace std;int main () {int year,month,day;while(cin>>year>>month>>day){time_t mytime = time(0);tm* mytm = localtime(&mytime);mytm->tm_mday=day;mytm->tm_mon=month-1;mytm->tm_year=year-1900;time_t newtime = mktime(mytm);cout<<year<<"-"<<month<<"-"<<day<<" --> 周" <<(mytm->tm_wday==0?7:mytm->tm_wday)<<endl;}return 0;}
方法2. 运用蔡勒公式
其他计算公式详见蔡勒公式百度百科 http://baike.baidu.com/view/598757.htm
W = [C/4] - 2C + y + [y/4] + [13 * (M+1) / 5] + d - 1
或者是:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
若要计算的日期是在1582年10月4日或之前,公式则为
w=y+[y/4]+[c/4]-2c+[13(m+1)/5]+d+3
#include <iostream>using namespace std;int main(){int year,month,day;while(cin >> year >> month >> day){if ( month < 3 ){year -= 1;month += 12;}char b[7][10] = {"Sunday","Monday","Tuesday", "Wednesday","Thursday","Friday","Saturday"};int c = int(year / 100), y = year - 100 * c;int w = int(c / 4) - 2*c +y +int(y/4) +(26 * (month + 1)/10 ) + day - 1;w = ( w % 7 + 7 ) % 7;cout << b[w] << endl;}return 0;}
- 计算给定日期的周历(得到某天是周几)
- 计算给定日期的后一天日期
- java 根据给定的日期得到给定日期的前一天的日期
- 计算给定两个日期的相差
- 给定两个日期,计算中间的天数
- js自动计算给定日期所在周的周一与周日对应的日期
- 计算给定日期后N天的日期
- 计算给定日期增加自然月后的日期
- shell计算给定的两个日期之间的天数
- 问题:计算给定年月日的日期是星期几(泽勒一致性)
- 面试题--计算给定日期和时间的下一秒
- 给出一个日期计算是给定年的哪一天
- java给定日期区间计算其中的周几有几天
- 华为OJ ---计算日期到天数的转换(给定一个日期,输出为这一年的第几天)
- 给定公历日期计算12星座(Java代码实现)
- 第四周作业 1(给定图数据文件(tinyG.txt),计算得到图的邻接矩阵,并把邻接矩阵保存到文件)
- java中日期计算,向后移动,得到明天的日期
- java通过输入工作日数(正或负)得到具体日期或计算两个日期之间的工作日
- hadoop学习总结一
- Oct 10 00:00:00 UTC+0800 2010转换成时间 2010-10-10这样的形式
- Windows内核驱动中操作文件
- SQL生成唯一ID号
- 课堂总结
- 计算给定日期的周历(得到某天是周几)
- 程序员面试100题之七:最长公共子字符串
- Java_08_31课堂总结
- 将exec执行结果放入变量
- 从开心网的奴隶安抚与折磨想到员工积极性与人力成本的问题
- 流程图是开发人员与需求人员交流的工具之一
- Java_08_30课堂总结
- 用while和for循环嵌套输出表格
- CString::Format()函数与格式输入与输出