C# 获取当前日期当年的周数
这几天跨年,项目上遇到了一个周数计算的问题。
2016年的元旦是周五开始的,之前系统计算的是属于15年的第53个周,但是年份已经到了16年了。
公司要求从1月1号周五开始算作16年的第一个周,今天1月4号也就是周一,开始算作16年的第二个周。
第一件事先百度,看看有没有现成的轮子,但是百度出来的都有问题。然后自己找了个案例修改了下。
网上的解决方案是这样子的。
//一.找到第一周的最后一天(先获取1月1日是星期几,从而得知第一周周末是几)
int firstWeekend=-Convert.ToInt32(DateTime.Parse(DateTime.Today.Year + "-1-1").DayOfWeek); //二.获取今天是一年当中的第几天
int currentDay = DateTime.Today.DayOfYear;
//三.(今天 减去 第一周周末)/7 等于 距第一周有多少周 再加上第一周的1 就是今天是今年的第几周了
// 刚好考虑了惟一的特殊情况就是,今天刚好在第一周内,那么距第一周就是0 再加上第一周的1 最后还是1
return Convert.ToInt32(Math.Ceiling((currentDay - firstWeekend) / 7.0)) + ;
2016年还没问题,但是到了2017年1月1号,那天刚好是周日,就开始算错了。
然后稍微做了修改,之后是这样。
var dt = new DateTime(, , );
//找到今年的第一天是周几
int firstWeekend = Convert.ToInt32(DateTime.Parse(dt.Year + "-1-1").DayOfWeek); //获取第一周的差额,如果是周日,则firstWeekend为0,第一周也就是从周天开始的。
int weekDay = firstWeekend == ? : ( - firstWeekend + ); //获取今天是一年当中的第几天
int currentDay = dt.DayOfYear; //(今天 减去 第一周周末)/7 等于 距第一周有多少周 再加上第一周的1 就是今天是今年的第几周了
// 刚好考虑了惟一的特殊情况就是,今天刚好在第一周内,那么距第一周就是0 再加上第一周的1 最后还是1
int current_week = Convert.ToInt32(Math.Ceiling((currentDay - weekDay) / 7.0)) + ;
计算正确。
C# 获取当前日期当年的周数的更多相关文章
- java获取一年的周数和间隔天数
java获取一年的周数和间隔天数 import java.text.ParseException; import java.text.SimpleDateFormat; import java.uti ...
- JAVA获取当前日期时间所在周的周一和周日日期
/** * 获取当前时间所在周的周一和周日的日期时间 * @return */ public static Map<String,String> getWeekDate() { Map&l ...
- db2中如何获取当前日期前一周的日期
SELECT CURRENT_DATE - (DAYOFWEEK(CURRENT_DATE) - 2 + (ROW_NUMBER() OVER (ORDER BY 1) ) ) DAY AS resu ...
- php获取当前日期开始一周日期与星期几
不说了,对于PHPer来说,写不出来说什么都是白瞎,不喜勿喷~~~~ function get_week(){ $data = []; $format='Y-m-d'; for ($i=0; $i&l ...
- java获取当前日期所在的周的周一,并以周一为一周开始
public String getMonday(String date) { if (date == null || date.equals("")) { System.out.p ...
- sql 中,如何获取两个日期之前月数、周数、天数
1.获取两个日期之间的月数.周数.天数语法 --1.获取两个日期之间的月数.周数.天数 --1.1)声明参数 ) ) --1.2)获取两个日期直接的月数 select DATEDIFF(MM,@sta ...
- python中根据时间获取周数,通过周数获取时间
# 时间## 时间和周数 import time import datetime # 获取今天是第几周 print(time.strftime('%W')) # 获取当前是周几(0-6,0代表周一) ...
- 第4天:function对象(案例:获取当前日期属于当年第几天、arguments对象、函数类型、参数、返回值、自身调用)
获取当前日期输入当年第几天 //输入,年月日,获取这个日期是这一年的第几天 //年-月--日:20171月31日 function getDay(year,month,day){ //定义变量存储对应 ...
- JS中使用时间戳,获取当前日期,计算前一周的日期~
今天项目中用到了一点 随便记录一下 function timestampToTime(timestamp) { );//时间戳为10位需*1000,时间戳为13位的话不需乘1000 var Y = d ...
随机推荐
- 检查WIFI是否连接
查看网络连接 查看WiFi连接状态 (连接- -断开)
- PowerShell批量创建文件夹
效果如下: 实现关键: mkdir (1..10|%{"hwllo$_"}) 过程概述:
- Android UI开发专题(转)
http://dev.10086.cn/cmdn/bbs/viewthread.php?tid=18736&page=1#pid89255 Android UI开发专题(一) 之界面设计 近期 ...
- 【题解】洛谷P2926 [USACO08DEC]拍头Patting Heads
洛谷P2926:https://www.luogu.org/problemnew/show/P2926 思路 对于每一个出现的数 从1到Max 凡是这个数的倍数 那么ans就加上他的个数 PS:最后要 ...
- phpstorm的主题相关
下载地址: http://phpstorm-themes.com/ 安装方法 JAR文件 导航->file->Import Settings->然后选择你刚才下载的JAR文件-> ...
- ES6笔记01
一.ECMAScript 6 ECMAScript 6.0,简称ES6,第一个版本是在2015年6月进行发布,所以也称之为<ECMAScript 2015 标准>(简称 ES2015). ...
- windows下搭建python
windows下搭建python 下载python版本 https://www.python.org/ 注意当前操作系统的位数,32位还是64位 同时 安装后 修改环境变量 ...
- Oracle udev 绑定磁盘(转)
scsi_id命令发出一个SCSI INQUIRY指令给设备,访问vital product data (VPD)页0x83的数据,那里包含设备的WWID和其他的信息,或者页0x80的数据,那里包含单 ...
- IOS异步获取数据并刷新界面dispatch_async的使用方法
在ios的开发和学习中多线程编程是必须会遇到并用到的.在java中以及Android开发中,大量的后台运行,异步消息队列,基本都是运用了多线程来实现. 同样在,在ios移动开发和Android基本是很 ...
- Angularjs基础(十一)
ng-csp 描述:修改内容的安全策略 实例: 修改AngularJS 中关于"eval"的行为方式及内联样式: <body ng-app="" ng-c ...