首页 > 编程语言 >C# 计算 指定年第几周,加减N周后时间范围

C# 计算 指定年第几周,加减N周后时间范围

时间:2023-04-14 17:33:13浏览次数:32  
标签:01 C# AddDays 加减 int 周后 2022 year ToShortString

Code

        /// <summary>
        /// 计算 指定年第几周,加减N周后时间范围
        /// </summary>
        /// <param name="year">指定年</param>
        /// <param name="week">第几周</param>
        /// <param name="weekDiffNum">加减N周</param>
        [Theory]
        [InlineData(2022, 2, -2)]
        [InlineData(2023, 2, -2)]
        [InlineData(2023, 3, 1)]
        [InlineData(2023, 4, -2)]
        public void CalcWeekDiff(int year, int week, int weekDiffNum)
        {
            //  今年第一天
            var firstDay = new DateTime(year, 1, 1);
            //  今年第一周的最后一天 = 6(礼拜天是0,礼拜六是6) - 当前天是本周第几天
            var firstWeekLastDay = firstDay.AddDays(6 - (int)firstDay.DayOfWeek);
            TestOutputHelper.WriteLine($"year:{year}\t第一天:{firstDay.ToShortString()}\t在第一周中属于第几天:{(int)firstDay.DayOfWeek}\tRange:[{firstWeekLastDay.AddDays(-6).ToShortString()} => {firstWeekLastDay.ToShortString()}]");
            //  得到指定周最后一天
            var specifyDate = firstWeekLastDay.AddDays((week - 1) * 7);
            TestOutputHelper.WriteLine($"第[{week}]周\tRange:[{specifyDate.AddDays(-6).ToShortString()} => {specifyDate.ToShortString()}]");
            //  计算指定周后的范围
            var calcDiffDate = specifyDate.AddDays(weekDiffNum * 7);
            TestOutputHelper.WriteLine($"操作[{weekDiffNum}]周\tRange:[{calcDiffDate.AddDays(-6).ToShortString()} => {calcDiffDate.ToShortString()}]");
        }

Result

year:2022    第一天:2022-01-01    在第一周中属于第几天:6    Range:[2021-12-26 => 2022-01-01]
第[2]周    Range:[2022-01-02 => 2022-01-08]
操作[-2]周    Range:[2021-12-19 => 2021-12-25]

 

标签:01,C#,AddDays,加减,int,周后,2022,year,ToShortString
From: https://www.cnblogs.com/CRobot/p/17319013.html

相关文章

  • 在EasyCVR中点击电子地图,出现快照不消失情况是什么原因?
    EasyCVR视频融合平台基于云边端一体化架构,部署轻快、功能灵活,平台可支持多协议、多类型设备接入,包括:国标GB28181、RTMP、RTSP/Onvif、海康Ehome、海康SDK、大华SDK、宇视SDK等(具体见下图)。在视频能力上,可实现视频直播、录像、回放、检索、云存储、告警上报、语音对讲、电子地图、集......
  • centos系统基本信息
    ####################系统版本:cat/etc/redhat-releasecat/etc/issue机器型号:dmidecode|grep"ProductName"硬盘:df-h目录使用率高于百分之80的标记为异常需要处理内存: free-h1、内存使用率超过百分之80的标记为异常需要处理2、 swap使用超率超过百分之10为异......
  • MacOs 高版本安装 python 2.7 ; Python 版本管理
    1. 执行brewinstallpyenv2. 安装python,pyenvinstall2.7.18  3. 设置全局默认pyenvglobal2.7.18可写入.zshrc或.bash_profile中echo-e'ifcommand-vpyenv1>/dev/null2>&1;then\neval"$(pyenvinit-)"\nfi'>>~/.zshrc......
  • Docker服务编排 Docker Compose 安装使用
    服务编排:微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,维护的工作量会很大。•要从Dockerfilebuildimage或者去dockerhub拉取image•要创建多个container•要管理这些container(启动停止删除)服务编排:按照一定......
  • 学习笔记402—Warning: Stopping docker.service, but it can still be activated by:
    执行systemctlstopdocker后提示“Warning:Stoppingdocker.service,butitcanstillbeactivatedby:docker.socket”解释:这是docker在关闭状态下被访问自动唤醒机制,很人性化,即这时再执行任意docker命令会直接启动注:如果真的不希望docker被访问自动唤醒,执行systemct......
  • Docker容器
    Docker容器1.运行容器dockerrun是启动容器的方法。可用三种方式指定容器启动时执行的命令:(1)CMD指令。(2)ENTRYPOINT指令。(3)在dockerrun命令行中指定。例如下面的例子:[root@0x1e61~]#dockerrunubuntupwd/容器启动时执行pwd,返回的/是容器中的当前目录。执行docke......
  • centos 升级内核(yum)
    yum安装要联网才能使用1、添加epel源#rpm--importhttps://www.elrepo.org/RPM-GPG-KEY-elrepo.org#rpm-Uvhhttp://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm  2、查看可用的内核版本yum--disablerepo="*"--enablerepo="elrepo-kernel"listav......
  • 【Linux】 SCP命令
    使用crt在windows和linux之间传输文件:alt+p远程拷贝文件,scp-r的常用方法:1.使用该命令的前提条件要求目标主机已经成功安装openssh-server如没有安装使用sudoapt-getinstallopenssh-server来安装2.使用格式:scp-r目标用户名@目标主机IP地址:/目标文件的绝对路径......
  • [Docker]容器服务是如何与cgroups协同进行资源控制的?
    Docker利用Linux的控制组(cgroups)来进行资源控制。cgroups是一种内核特性,它允许对资源(例如CPU、内存、磁盘I/O等)进行限制、分配和优先级分配。Docker利用cgroups进行资源限制时,他会通过cgroups为每个容器分配特定的资源配额。这意味着每个容器只能够使用cgroups中指......
  • docker-day4——Dockerfile、docker私有仓库、dockercompose介绍、dockercompose部署f
    目录一、Dockerfile1.1常用和不常用命令1.2dockerfile构建一个djagno项目二、docker私有仓库2.1镜像传到官方仓库2.2镜像分层2.3私有仓库搭建三、dockercompose介绍四、dockercompose部署flask+redis项目4.1新建flask项目app.py4.2编写Dockerfile--》用于构建flask项目的......