首页 > 编程语言 >C++获取一年中所有周信息

C++获取一年中所有周信息

时间:2022-12-05 11:00:33浏览次数:32  
标签:59 idx 获取 int year C++ weekMap 一年 time

std::map<int, std::pair<CTime, CTime>> YearOfWeek(int year)
{
    std::map<int, std::pair<CTime, CTime>> weekMap;

    CTime time(year, 1, 1, 0, 0, 0);
    int dow = time.GetDayOfWeek();

    //第一周比较特殊,先拿第一周的数据
    int idx = 1;
    int firstWeek[] = { 0, 0, 6, 5, 4, 3, 2, 1 };//1.1号到星期日需要几天
    weekMap[idx++] = std::make_pair(time, time + CTimeSpan(firstWeek[dow], 23, 59, 59));

    //第二周开始,时间调整到星期一
    time = weekMap[idx - 1].second + CTimeSpan(0, 0, 0, 1);//加一秒

    while (year == time.GetYear())
    {
        CTime weekst = time;
        time += CTimeSpan(6, 23, 59, 59);
        weekMap[idx++] = std::make_pair(weekst, time);
        time += CTimeSpan(0, 0, 0, 1);
    }

    //最后一周比较特殊,今年可能不足一周,直接将最后的结束时间置为12.31 23:59:59
    weekMap[--idx].second = CTime(year, 12, 31, 23, 59, 59);

    return weekMap;
}

  以上代码按照中国人习惯将星期一设置为一周的第一天,星期日是最后一天,输入2022,执行结果:

  

 

标签:59,idx,获取,int,year,C++,weekMap,一年,time
From: https://www.cnblogs.com/kuaixue/p/16949276.html

相关文章

  • VMware ESXi 6.7安装win10EFI Network获取不到数据
    错误信息如下图:接着出现以下画面解决方法如下:1.首先将虚拟机关机2.将固件由EFI改为BIOS3.再次启动虚拟机,此时就可以安装win10了......
  • Spring中获取request的几种方法,及其线程安全性分析
    前言本文将介绍在SpringMVC开发的web系统中,获取request对象的几种方法,并讨论其线程安全性。目录概述如何测试线程安全性方法1:Controller中加参数方法2:自动注入方法3......
  • 类项目中的配置文件app.config在打包安装后的信息获取的问题
    在一个项目中碰到这样的一个问题,做一个WORD插件,功能在类库项目中实现了,配置信息存在类库项目的配置文件app.config中,在进行打包后,获取的配置文件中的DocType节点信息时,使用......
  • 怎么查看和获取SQL Server实例名
    查看實例名時可用1、服务—SQLServer(实例名),默认实例为(MSSQLSERVER)或在连接企业管理时-查看本地实例2、通過注冊表HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft......
  • VC6.0和VS2005:C++和C#编写调用COM组件
    这篇文章就是关于COM组件的编写和调用的,主要包含了使用VC6.0编写和调用COM组件,VS2005中使用C#编写和调用COM组件,以及在VC6.0和VS2005之间互相调用COM组件。前一阵在......
  • c++ hello world
    //myfirst.cpp--displaysamessage#include<iostream>//aPREPROCESSORdirectiveintmain()//functionheader{......
  • Vue.js获取当前时间30天之前的日期
    该方法获取日期的格式为YYYY-MM-DDgetDay(day){vartoday=newDate();vartargetday_milliseconds=today.getTime()+1000*60*60*24*da......
  • C++ IMPL模式解析
    https://blog.csdn.net/myw31415926/article/details/127722899抛砖引玉试想一个问题,如果有一套收发数据的网络接口,需要提供给其他同事或厂家使用,包含头文件和动态库,假设......
  • c++ - 误删cmake-build-debug ,clion具体解决
    1.背景误删了cmake-build-debug文件夹或者破会了内部文件2.解决如果cmake-build-debug文件夹删除了,需要在同一个文件添加这个文件夹如果cmake-build-debug文件夹还存在......
  • C++中STL容器详解
    STL是提高C++编写效率的一个利器。——闫学灿一.string参考文章C语言中文网文章:C++string详解,C++字符串详解介绍C语言中,字符串是以\0结尾的一些字符的集合,为了操......