C# 中根据datetime的值来计算属于本年的第几周,类似delphi中的weekoftheyear功能
/// <summary>
/// 获得今天是今年的第几周
/// </summary>
/// <param name="year"></param>
/// <returns></returns>
public string GetWeekOfYear(DateTime today)
{
int days = today.DayOfYear;
int remainder = days % ;
if (remainder == )
return Convert.ToString(days / );
else
return Convert.ToString(days / + );
}
-------------上面的代码没有考虑到当年的1月1号,并非是周一,所以算出来的会有误差
下面是参考博客园唔愛吃蘋果的代码。
public string GetWeekOfYear(DateTime today)
{
int weeknow = Convert.ToInt32(today.DayOfWeek);//today是周几
int daydiff = (-) * (weeknow + );//今日与上周末的天数差
int days = today.AddDays(daydiff).DayOfYear;//上周末是本年第几天
int weeks = days / ;
if (days % != )
{
weeks++;
}
//此时,weeks为上周是本年的第几周
return Convert.ToString(weeks + );
}
他这边就巧妙的用上周末的来计算之前的周数
可是也存在比如本年的1月1号是周三,那么上周的周末是去年的,导致计算出错。
再加入判断,修改后代码如下:
/// <summary>
/// 获得今天是今年的第几周
/// </summary>
/// <param name="today"></param>
/// <returns></returns>
public string GetWeekOfYear(DateTime today)
{
int NewYear = Convert.ToInt32(today.Year); //今年的年份
int weeknow = Convert.ToInt32(today.DayOfWeek);//today是周几
int daydiff = (- * weeknow);//今日与上周末的天数差
int days = today.AddDays(daydiff).DayOfYear;//上周末是本年第几天
int OldYear = Convert.ToInt32(today.AddDays(daydiff).Year); //上周末的年份
if (NewYear == OldYear)
{
int weeks = days / ;
if (days % != )
{
weeks++;
}
//此时,weeks为上周是本年的第几周
return Convert.ToString(weeks + );
}
else
return "";
}
C# 中根据datetime的值来计算属于本年的第几周,类似delphi中的weekoftheyear功能的更多相关文章
- C语言:将形参s所指字符串中所有ASCII码值小于97的字符存入形参t所指字符数组中,
//将形参s所指字符串中所有ASCII码值小于97的字符存入形参t所指字符数组中,形成一个新串,并统计出符合条件的字符个数返回. //关注点:使用*(t+n)的方式可以不改变指针的指向,像数组一样处理 ...
- C#中的DateTime是值类型还是引用类型
近期遇到了DateTime到底是值类型还是引用类型的疑惑,顺势较深入地了解一下DateTime相关的内容 结论:DateTime是值类型,因为DateTime是结构体,而结构体继承自Syste.Val ...
- Dynamics AX 2012 R2 在AIF服务契约中使用DateTime
Reinhard在AIF中使用DateTime作为服务契约的参数,与DotNet程序进行交互时,总是因为时区的问题,导致DotNet提交的System.DateTime与AIF中接收的DateTime ...
- 纸壳CMS3.0中的规则引擎,表达式计算
纸壳CMS3.0中的规则引擎,用于计算通用表达试结果.通常业务逻辑总是复杂多变的,使用这个规则引擎可以灵活的修改计算表达式. IRuleManager IRuleManager,是使用规则引擎的主要接 ...
- 使用 JavaScript 在下拉列表中获取选定的值
使用 JavaScript 在下拉列表中获取选定的值 演示Demo 使用 JavaScript 在下拉列表中获取选定的值? <!DOCTYPE html> <html> < ...
- Java中不得不谈的值传递和地址传递
个人的一些认识,希望能对初学Java的你,或者困惑于方法参数传递的你祈祷一丝帮助! 下面是一些作者的个人观点,如果有错,欢迎各位大牛指出错误,灰常感谢您的观看与支持... -------------- ...
- [教程]Delphi 中三种回调函数形式解析
Delphi 支持三种形式的回调函数 全局函数这种方式几乎是所有的语言都支持的,类的静态函数也可以归为此类,它保存的只是一个函数的代码起始地址指针( Pointer ).在 Delphi 中声明一般为 ...
- DELPHI中枚举类型数据的介绍和使用方法
在看delphi程序的时候看到aa=(a,b,c,d);这样的东西,还以为是数组,同事说是函数,呵呵,当然这两个都不屑一击,原来这样式子是在声明并付值一个枚举类型的数据.下边写下来DELPHI中枚举类 ...
- 如何在Delphi 中使用 DevExpressVCL的 CxGrid与CxTreeList,编辑某列后计算另一列的值
如何在Delphi 中使用 DevExpressVCL的 CxGrid与CxTreeList,编辑某列后计算另一列的值:比如 输入 单价,数量,计算金额. 参考: 1. 输入 单价,数量,计算金额 ...
随机推荐
- margin 属性的相关问题
1.margin 的IE6 双边距问题 问题描述:浮动的块挨边框的时候会产生双倍的边距 解决方案: 1.增加display:inline; 2.去除float属性 2.margin 的重叠问题 CSS ...
- 浅谈Struts2(三)
一.Struts2收集client的参数 核心思路: <form method="post" action="XXXX"> <input ty ...
- Tomcat 启动 Debug模式
如果debug启动遇到如下错误: ERROR: transport error 202: gethostbyname: unknown host ERROR: JDWP Transport dt_so ...
- app 转caf 音频 代码
afconvert /Users/xiaoye/Downloads/cat.caf /Users/xiaoye/Downloads/cat1.caf -d ima4 -f caff -v;
- 使用Protel99 SE 拼板的详细图解(新加队列粘贴方法)
很多网友跟我沟通,提到我上次博文中的protel99se中做拼板图解过于简略,应大家的有求,重新修改了操作图示. 首先打开PCB文档.如图所示:电路板的原点并没有在边上,为了操作方便和规范,先把有点设 ...
- 一劳永逸让windows 64位操作系统 禁止强制驱动签名
如何让WINDOWS7 64位直接加载“禁用强制驱动程序签名”方式启动 Windows Client 论坛 > Windows 7 问题 0 登录进行投票 因为开发需要,要装一台设备的驱动,但 ...
- FastJson中@JSONField注解使用
最近做项目中,使用了json格式在服务器之间进行数据传输.但是发现json格式数据不符合JAVA中的变量定义规则,并且难以理解,因此需要在后台中做二次处理,将数据处理成我们系统中定义的格式. 思路: ...
- Spring Boot 属性配置和使用
Spring Boot 属性配置和使用 Spring Boot 允许通过外部配置让你在不同的环境使用同一应用程序的代码,简单说就是可以通过配置文件来注入属性或者修改默认的配置. Spring Boot ...
- Mysql-udf-http 插件的安装与使用
1. 在Linux系统上安装Mysql-udf-http ulimit -SHn wget http://curl.haxx.se/download/curl-7.21.1.tar.gz .tar ...
- Phone List(字典树)
Phone List Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 25709 Accepted: 7785 Descr ...