计算给定日期的周历(得到某天是周几)

本文介绍了两种计算给定日期周历的方法:1)利用ctime头文件中的struct tm结构,通过mktime函数更新tm_wday;2)使用蔡勒公式进行计算。对于1582年10月4日前的日期,需采用特定公式。

方法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;
}</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值