PCB生产周期计算逻辑:

代码实现:

调用代码:

getWeek(DateTime.Now.Date, "WWYY", 0);

周期计算逻辑:

     /// <summary>/// 获取周期/// </summary>/// <param name="CurrentDate">填写计算日期</param>/// <param name="Format">YYYY,YY,WW,MM,DD</param>/// <param name="AddDay">增加周期日期</param>/// <returns></returns>public string getWeek(DateTime CurrentDate, string Format, int AddDay = 0){string YYYY, YY, MM, DD, WW;CurrentDate = CurrentDate.AddDays(AddDay);//CurrentDate = DateTime.Parse("2014-12-29");YYYY = CurrentDate.Year.ToString();YY = YYYY.Substring(2, 2);MM = CurrentDate.Month.ToString().PadLeft(2, '0');DD = CurrentDate.Day.ToString().PadLeft(2, '0');WW = "";if (Format.IndexOf("WW") > -1){int StartWeek = 4;DateTime CurrentStartDate = new DateTime(CurrentDate.Year, 1, 1);DateTime CurrentFirstWeekDate = getFirstWeekDate(CurrentStartDate, StartWeek);int DayCount = 0, WeekCount = 0, WeekDayCount = 0, WeekNum = 0, YearNum = 0, MonthNum = 0;if (CurrentDate >= CurrentFirstWeekDate){DateTime NextStartDate = new DateTime(CurrentDate.Year + 1, 1, 1);DateTime NextFirstWeekDate = getFirstWeekDate(NextStartDate, StartWeek);if (CurrentDate >= NextFirstWeekDate){DayCount = (CurrentDate - NextFirstWeekDate).Days + 1;YearNum = NextStartDate.Year;MonthNum = NextStartDate.Month;}else{DayCount = (CurrentDate - CurrentFirstWeekDate).Days + 1;YearNum = CurrentStartDate.Year;MonthNum = CurrentStartDate.Month;}}else{DateTime PreviouStartDate = new DateTime(CurrentDate.Year - 1, 1, 1);DateTime PreviouFirstWeekDate = getFirstWeekDate(PreviouStartDate, StartWeek);DayCount = (CurrentDate - PreviouFirstWeekDate).Days + 1;YearNum = PreviouStartDate.Year;MonthNum = PreviouStartDate.Month;}WeekCount = (int)Math.Floor(DayCount / 7.0);WeekDayCount = DayCount % 7;WeekNum = WeekCount + (int)Math.Ceiling(WeekDayCount / 7.0);YYYY = YearNum.ToString();YY = YYYY.Substring(2, 2);MM = MonthNum.ToString().PadLeft(2, '0');WW = WeekNum.ToString().PadLeft(2, '0');}return Format.Replace("YYYY", YYYY).Replace("YY", YY).Replace("MM", MM).Replace("DD", DD).Replace("WW", WW);}/// <summary>/// 获取当前日期第一周 开始的日期/// </summary>/// <param name="StartDate">计算日期</param>/// <param name="StartWeek">起始周期</param>/// <returns>第一周日期</returns>public DateTime getFirstWeekDate(DateTime StartDate, int StartWeek = 4){int CurrentWeek = (int)StartDate.DayOfWeek == 0 ? 7 : (int)StartDate.DayOfWeek;int CurrentWeekDiff = CurrentWeek <= StartWeek ? -CurrentWeek + 1 : 7 - CurrentWeek + 1;DateTime CurrentFirstWeekDate = StartDate.AddDays(CurrentWeekDiff);return CurrentFirstWeekDate;}

实现Demo效果:

转载于:https://www.cnblogs.com/pcbren/p/9217218.html

PCB 生产周期计算逻辑与代码实现相关推荐

  1. ir2104s的自举电容_电赛必备,IR2104S半桥驱动MOS管电机驱动板(PCB工程文件+磁悬浮代码)...

    IR2104S半桥驱动MOS管电机驱动板设计心得: (1)驱动电路方案为经典的半桥驱动IR2104S加N沟道MOS管IR7843,MOSEFT内部有续流二极管,听说是寄生的(不知对不对),所以外加了肖 ...

  2. 【表面缺陷检测】基于yolov5的PCB表面缺陷检测(附代码和数据集)

    文章目录 1.项目背景 2.获取数据集 3. yolov5代码 4.环境配置 4.1创建虚拟环境 4.2安装依赖库 4.2.1项目解释器 4.2.2安装项目依赖库 4.3下载预训练权重 4.4测试环境 ...

  3. 这个B站up主太硬核了!纯手工打造AI小电视:硬件自己焊接,驱动代码全手写...

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 晓查 发自 凹非寺  本文转自自:量子位(QbitAI) 一个低调的 ...

  4. pcb结构链表_第2章 2-1进程与PCB

    2.1 进程的基本概念 1.关于程序执行顺序 1)引入前趋图 描述进程执行前后关系的图 有向无循环图(DAG) Pi结点:描述一个程序段.进程.或一条语句. 有向边"->": ...

  5. Scala模拟Spark分布式计算流程示例代码

    场景 两个Executor,分别接收来自Driver分发的任务(数据和计算逻辑) 代码 Executor1 package com.zxl.bigdata.spark.core.testimport ...

  6. HAL库版STM32双轮自平衡车(三) ———代码精讲

    系列文章目录 编码电机测速 HAL库OLED的使用 HAL库版STM32双轮自平衡车(一) ---代码思路和PID基础精讲 HAL库版STM32双轮自平衡车(二) --- CubeMX的配置.原理图接 ...

  7. 纯手工打造AI小电视,这个B站up主太硬核了!硬件自己焊接,驱动代码全手写...

    点击上方"码农突围",马上关注 这里是码农充电第一站,回复"666",获取一份专属大礼包 真爱,请设置"星标"或点个"在看&quo ...

  8. PCB --元件封装

    1 贴片元件封装说明   发光二极管:颜色有红.黄.绿.蓝之分,亮度分普亮.高亮.超亮三个等级,常用的封装形式有三类:0805.1206.1210   二极管:根据所承受电流的的限度,封装形式大致分为 ...

  9. Altium Designer v23.2.1.34 PCB板设计软件中文特别版

    Altium Designer 中文特别版是一款功能强大的电子设计自动化(EDA)软件,它提供了一个完整的设计环境,可以帮助电子工程师快速设计.模拟.仿真和制造电子产品.Altium Designer ...

最新文章

  1. layer.load 支持文字内容
  2. HDU 1846 Brave Game
  3. 安装 | Visual Studio Community 2015与OpenCV的安装及下载链接
  4. BBS中父模块缩进,子模块归属父模块的实现方式
  5. leetcode1291. 顺次数(回溯)
  6. elementui分页组件按钮样式修改_Vue使用Elementui修改默认最快方法!
  7. HTTP知识普及系列:HTTP返回状态码
  8. TVS ESD 二极管介绍与应用
  9. coding.net及git的使用方式
  10. ureport2项目使用
  11. uview实现点击预览图片效果
  12. Circular RNA的产生机制、功能及RNA-seq数据鉴定方法
  13. linux mantis安装 yum,CentOS 安装和配置 Mantis
  14. 广义瑞利商_LDA里的瑞利商和广义瑞利商
  15. android手机性能如何界定,手机性能测试最新资讯
  16. seata xid是什么_微服务分布式事务解决方案-springboot整合分布式seata1.3.0
  17. 灰狼算法(GWO)优化支持向量机的数据回归预测,GWO-SVM回归预测,多输入单输出模型。
  18. 东财《人力资源管理X》综合作业
  19. TopCoder入门教程(转载)
  20. centos安装rvm(菜鸟安装)

热门文章

  1. Partition Array by Odd and Even
  2. SpringMVC学习一
  3. weblogic-开发模式转变为生产模式生产模式转变为开发模式
  4. 赛可达实验室发布2015测评认证标准
  5. Lintcode1 A+B Problem solution 题解
  6. 卡巴斯基误杀奇虎360
  7. Linux操作系统的8个经典技巧
  8. 发布npm包到GitHub Packages
  9. 升级ipython_Linux服务器python升级
  10. Bootstrap初步