PCB生产周期计算逻辑:

代码实现:

调用代码:

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

周期计算逻辑:

  1. /// <summary>
  2. /// 获取周期
  3. /// </summary>
  4. /// <param name="CurrentDate">填写计算日期</param>
  5. /// <param name="Format">YYYY,YY,WW,MM,DD</param>
  6. /// <param name="AddDay">增加周期日期</param>
  7. /// <returns></returns>
  8. public string getWeek(DateTime CurrentDate, string Format, int AddDay = )
  9. {
  10. string YYYY, YY, MM, DD, WW;
  11. CurrentDate = CurrentDate.AddDays(AddDay);
  12. //CurrentDate = DateTime.Parse("2014-12-29");
  13. YYYY = CurrentDate.Year.ToString();
  14. YY = YYYY.Substring(, );
  15. MM = CurrentDate.Month.ToString().PadLeft(, '');
  16. DD = CurrentDate.Day.ToString().PadLeft(, '');
  17. WW = "";
  18. if (Format.IndexOf("WW") > -)
  19. {
  20. int StartWeek = ;
  21. DateTime CurrentStartDate = new DateTime(CurrentDate.Year, , );
  22. DateTime CurrentFirstWeekDate = getFirstWeekDate(CurrentStartDate, StartWeek);
  23. int DayCount = , WeekCount = , WeekDayCount = , WeekNum = , YearNum = , MonthNum = ;
  24. if (CurrentDate >= CurrentFirstWeekDate)
  25. {
  26. DateTime NextStartDate = new DateTime(CurrentDate.Year + , , );
  27. DateTime NextFirstWeekDate = getFirstWeekDate(NextStartDate, StartWeek);
  28. if (CurrentDate >= NextFirstWeekDate)
  29. {
  30. DayCount = (CurrentDate - NextFirstWeekDate).Days + ;
  31. YearNum = NextStartDate.Year;
  32. MonthNum = NextStartDate.Month;
  33. }
  34. else
  35. {
  36. DayCount = (CurrentDate - CurrentFirstWeekDate).Days + ;
  37. YearNum = CurrentStartDate.Year;
  38. MonthNum = CurrentStartDate.Month;
  39. }
  40. }
  41. else
  42. {
  43. DateTime PreviouStartDate = new DateTime(CurrentDate.Year - , , );
  44. DateTime PreviouFirstWeekDate = getFirstWeekDate(PreviouStartDate, StartWeek);
  45. DayCount = (CurrentDate - PreviouFirstWeekDate).Days + ;
  46. YearNum = PreviouStartDate.Year;
  47. MonthNum = PreviouStartDate.Month;
  48. }
  49. WeekCount = (int)Math.Floor(DayCount / 7.0);
  50. WeekDayCount = DayCount % ;
  51. WeekNum = WeekCount + (int)Math.Ceiling(WeekDayCount / 7.0);
  52. YYYY = YearNum.ToString();
  53. YY = YYYY.Substring(, );
  54. MM = MonthNum.ToString().PadLeft(, '');
  55. WW = WeekNum.ToString().PadLeft(, '');
  56. }
  57.  
  58. return Format.Replace("YYYY", YYYY).Replace("YY", YY).Replace("MM", MM).Replace("DD", DD).Replace("WW", WW);
  59. }
  60. /// <summary>
  61. /// 获取当前日期第一周 开始的日期
  62. /// </summary>
  63. /// <param name="StartDate">计算日期</param>
  64. /// <param name="StartWeek">起始周期</param>
  65. /// <returns>第一周日期</returns>
  66. public DateTime getFirstWeekDate(DateTime StartDate, int StartWeek = )
  67. {
  68. int CurrentWeek = (int)StartDate.DayOfWeek == ? : (int)StartDate.DayOfWeek;
  69. int CurrentWeekDiff = CurrentWeek <= StartWeek ? -CurrentWeek + : - CurrentWeek + ;
  70. DateTime CurrentFirstWeekDate = StartDate.AddDays(CurrentWeekDiff);
  71. return CurrentFirstWeekDate;
  72. }

实现Demo效果:

PCB 生产周期计算逻辑与代码实现的更多相关文章

  1. 关于 MFRC522引脚功能图

    MFRC522是属于13.56mhz芯片.另外SI522也是13.56mhz芯片,SI522 PIN对PIN完全兼容MFRC522,并且软硬件兼容,且引脚功能图都是一样的,功能方面比MFRC522多A ...

  2. 13.56Mhz SI522兼容MFRC522的资料以及对比性能

    (13.56Mhz芯片) SI522是一颗专门替代MFRC522/FM17522,PIN对PIN 完全软硬件兼容.相对于MFRC522,SI522完全替换,不需要做任何更改,同时接受模式下功耗低10m ...

  3. 20135320赵瀚青LINUX第六周学习笔记

    赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 这周主要讲解的是进程. ...

  4. Nodejs实战 —— 测试 Node 程序

    读 <node.js实战2.0>,进行学习记录总结. 当当网购买链接 豆瓣网1.0链接 测试 Node 程序 本章内容 用 Node 的 assert 模块测试 使用其他断言库 使用 No ...

  5. 【牛客 错题集】Linux系统方面错题合集

    前言:牛客Linux322道全部刷完,有些题目较老,甚至考核5系统,现在7都出来了几年了 = = 还有些题目解析的很好部分也摘录了进来.很多涉及嵌入式开发的选择题同样的摘录的作为了解使用 ------ ...

  6. UNIX C 总结

    --day01--王建立QQ:2529866769今天的内容:一.计算机的框架什么是操作系统?(汽车)加油系统 油门 用户跟加油子系统交互的窗口.(接口)方向系统 方向盘 用户跟方向系统的交互接口.导 ...

  7. SI522和RC522/ZS3801/FM17520的区别

    小编最近在测试一颗新的芯片,是国内知名厂家中科微研发的,主打超低功耗的厂家. 经过测试和比较小编发现 相对于MFRC522,SI522可以完全替换,不需要做任何更改,同时接受模式下功耗低10mA左右, ...

  8. ETC系列产品非接触式读卡器方案:SI522

    随着科技的不断发展,出行上高速这是非常寻常的事.但是在很多节假日高峰时期,在高速路口塞车缴费给很多车主造成很大的烦心.为了解决这一系列的问题,科技发明了ETC这种便捷式缴费技术,让车主们顺畅通过高速路 ...

  9. 抗干扰性极强非接触式读卡13.56mhz芯片:SI522

    由于智能门锁产品不断地火爆,市场上的不断出现破解的方法.对此中科微联合深圳市动能世纪科技有限公司不断满足市场需求,推出一款抗干扰性极强的13.56mhz芯片. 该芯片出了抗干扰性强以外还直接PIN2P ...

随机推荐

  1. RTL Compiler之synthesis steps

    1 synthesis steps 1) Search Paths rc:/> set_attribute lib_search_path path / rc:/> set_attribu ...

  2. Python 之类型转换

    # int(x[, base]) 将x转换为一个整数,base为进制,默认十进制 # # long(x[, base] ) 将x转换为一个长整数 # # float(x) 将x转换到一个浮点数 # # ...

  3. SQL几种常用的函数

    函数的种类: 算数函数(数值计算的函数) 字符串函数(字符串操作的函数) 日期函数(用来进行日期操作的函数) 转换函数(用来转换数据类型和值的函数) 聚合函数(用来进行数据聚合的函数) 算数函数(+- ...

  4. Java中的接口详解

    接口 是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量.构造方法和成员方法,那么接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8) ...

  5. 使用原生JS的AJAX读取json全过程

    首先ajax(async javascript and xml)是用于前端与后端文件比如xml或者json之间的交互.他是一种异步加载技术,意味着你点击某个加载事件是再也不用刷新整个页面,而是发送局部 ...

  6. 第三节:Web爬虫之BeautifulSoup解析库

    Beautiful Soup官方说明: Beautiful Soup提供一些简单的.python式的函数用来处理导航.搜索.修改分析树等功能.它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为 ...

  7. 远程连接Ubuntu的桌面

    参考:http://www.linuxidc.com/Linux/2016-06/132442.htm http://teliute.org/linux/TeUbt/lesson52/lesson52 ...

  8. ES6-babel转码

    关于BaBel转码 有人问我babel的功能以及执行的过程和配置,在网上查阅了大量的资料~收集到这些~有错请指出,及时修改. ------------------------------------- ...

  9. Spring 源代码学习(一)

    一 .Spring容器最基本的功能 1. 读取配置文件 2. 校验配置文件的正确性 3. 将配置文件信息加载到内存 4. 通过反射实例化bean对象 5. 构建系统  二 .核心类关系图 图1-1 D ...

  10. 【[Offer收割]编程练习赛12 D】 寻找最大值

    [题目链接]:http://hihocoder.com/problemset/problem/1496 [题意] [题解] 先把这n个数排个序吧. 这样相邻的数字就在一起了; 这样a[i]&a ...