快速打印指定格式的日期包含星期几(C++代码实现)

快速打印指定格式的日期包含星期几(C++代码实现)

日常工作中可能会遇到频繁按照指定格式填写日期的场景,博主也遇到了这些场景,所以一时兴起,写了一个C++版本的快速打印日期的代码。

下面是源代码

#include <iostream>
#include <string>

// 教科书版判断是否是闰年
bool IsLeapYear(const int iYear)
{
    return (iYear % 4 == 0 && iYear % 100 != 0) || (iYear % 400 == 0);
}

int main(int argc, char *argv[])
{
    // 1. 记录每个月的天数,分闰年和非润年两个版本
    const int daysInMonth[2][12] = { {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,},
                                    {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,},
    };

    // 2. 记录一周的名字,方便后面用数组下标循环访问
    const char *weekName[7] = { "周一", "周二", "周三", "周四", "周五", "周六", "周日", };

    // 3. 循环访问的控制变量
    int iCnt = 0;

    // 4. 遍历年份
    for (int iYear = 2024; iYear < 2025; ++iYear)
    {
        // 遍历月份
        for (int iMonth = 7; iMonth < 8; ++iMonth)
        {
            // 遍历当前月份的每天
            for (int iDay = 1; iDay <= daysInMonth[IsLeapYear(iYear)][iMonth-1]; ++iDay)
            {
                // 1. 计算这一天是周几
                std::string sWeek = weekName[iCnt % 7];

                // 2. 递增
                ++iCnt;

                // 3. 准备输出的日期格式(用户可以调整自己喜欢的格式)
                std::string sOutput = std::to_string(iYear) + "/" +
                                      std::to_string(iMonth) + "/" +
                                      std::to_string(iDay) + sWeek;

                // 4. 输入日期(此处可以换其他接口用以直接输出到excel表格中,此处为了教学直接输出到控制台)
                std::cout << sOutput << std::endl;
            }
        }
    }

    // 5. 返回状态值
    return 0;
}

生成结果如下所示

2024/7/1周一
2024/7/2周二
2024/7/3周三
2024/7/4周四
2024/7/5周五
2024/7/6周六
2024/7/7周日
2024/7/8周一
2024/7/9周二
2024/7/10周三
2024/7/11周四
2024/7/12周五
2024/7/13周六
2024/7/14周日
2024/7/15周一
2024/7/16周二
2024/7/17周三
2024/7/18周四
2024/7/19周五
2024/7/20周六
2024/7/21周日
2024/7/22周一
2024/7/23周二
2024/7/24周三
2024/7/25周四
2024/7/26周五
2024/7/27周六
2024/7/28周日
2024/7/29周一
2024/7/30周二
2024/7/31周三

大家如果有兴趣,可以在下方评论处提出自己的日期格式的需求,博主抽空可以多改几个版本给大家。当然博主写的也很简陋,如果大家有更好的代码,也可以在下方评论处分享,谢谢~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

James_Xue_2023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值