【转载】对C#DateTime的一些扩展,计算周内第一天,最后一天

    /// <summary>
    /// DateTime的一些扩展
    /// </summary>
    public class DateTime2
    {
        /// <summary>
        /// 得到本周第一天(以星期天为第一天)
        /// </summary>
        /// <param name="datetime"></param>
        /// <returns></returns>
        public DateTime GetWeekFirstDaySun(DateTime datetime)
        {
            //星期天为第一天
            int weeknow = Convert.ToInt32(datetime.DayOfWeek);
            int daydiff = (-1) * weeknow;

            //本周第一天
            string FirstDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd");
            return Convert.ToDateTime(FirstDay);
        }

        /// <summary>
        /// 得到本周第一天(以星期一为第一天)
        /// </summary>
        /// <param name="datetime"></param>
        /// <returns></returns>
        public DateTime GetWeekFirstDayMon(DateTime datetime)
        {
            //星期一为第一天
            int weeknow = Convert.ToInt32(datetime.DayOfWeek);

            //因为是以星期一为第一天,所以要判断weeknow等于0时,要向前推6天。
            weeknow = (weeknow == 0 ? (7 - 1) : (weeknow - 1));
            int daydiff = (-1) * weeknow;

            //本周第一天
            string FirstDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd");
            return Convert.ToDateTime(FirstDay);
        }

        /// <summary>
        /// 得到本周最后一天(以星期六为最后一天)
        /// </summary>
        /// <param name="datetime"></param>
        /// <returns></returns>
        public DateTime GetWeekLastDaySat(DateTime datetime)
        {
            //星期六为最后一天
            int weeknow = Convert.ToInt32(datetime.DayOfWeek);
            int daydiff = (7 - weeknow) - 1;

            //本周最后一天
            string LastDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd");
            return Convert.ToDateTime(LastDay);
        }

        /// <summary>
        /// 得到本周最后一天(以星期天为最后一天)
        /// </summary>
        /// <param name="datetime"></param>
        /// <returns></returns>
        public DateTime GetWeekLastDaySun(DateTime datetime)
        {
            //星期天为最后一天
            int weeknow = Convert.ToInt32(datetime.DayOfWeek);
            weeknow = (weeknow == 0 ? 7 : weeknow);
            int daydiff = (7 - weeknow);

            //本周最后一天
            string LastDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd");
            return Convert.ToDateTime(LastDay);
        }
    }

原文链接:http://blog.csdn.net/joyhen/article/details/9179763

时间: 2024-12-24 07:35:28

【转载】对C#DateTime的一些扩展,计算周内第一天,最后一天的相关文章

《从零开始学Swift》学习笔记(Day 50)——扩展计算属性、方法

原创文章,欢迎转载.转载请注明:关东升的博客 可以在原始类型上扩展计算属性,包括实例计算属性和静态计算属性.添加计算属性的定义,与普通的计算属性的定义是一样的. 实例计算属性示例:在网络编程时,为了减少流量,从服务器端返回的不是信息描述,而是编码,然后在本地再将编码转换为描述信息.为此定义了如下Int类型扩展: extension Int {              //定义Int类型的扩展     var errorMessage : String {   //只读计算属性         

Datetime类型的扩展

原文出处:http://www.codeproject.com/Articles/870939/Datetime-Extensions 本文主要针对System.DateTime类型的一系列扩展.包括不同语言环境下对节假日和工作日时间的计算. 简介: 这个开源的项目是对System.DateTime类型的一系列扩展.包括在不同语言环境下节假日和工作日的时间计算. 在许多的企业中,都有一个工作日的概念.无论是计算工作流的完成日期还是回电话,除了节假日和周末,许多企业都从一个日期来增加或减少天数的方

计算某年的第一天是周几

计算某年的第一天是周几 在最近做的一个项目中需要一个计算任意一天是周几的算法,而这个算法的难点在于计算这个月所在的这一年的第一天是周几,只要知道了这一年的第一天是周几,只要算出这天和这年第一天之间有多少天在对7做取模运算就可以轻易算出这一天是周几,这样问题就转换到了计算这一年的第一天是周几的问题. 这里先补充一个常识,就是公元1年第一天是周一.在知道这个之后我们只要计算出这一年第一天到公元一年第一天之间有多少天的问题. 设要求的年份为y,这一年第一天到公元一年第一天之间有n天: 假设没有闰年和平

给出一个区间[a, b],计算区间内“神奇数”的个数。 神奇数的定义:存在不同位置的两个数位,组成一个两位数(且不含前导0),且这个两位数为质数。 比如:153,可以使用数字3和数字1组成13,13是质数,满足神奇数。同样153可以找到31和53也为质数,只要找到一个质数即满足神奇数。

给出一个区间[a, b],计算区间内"神奇数"的个数.神奇数的定义:存在不同位置的两个数位,组成一个两位数(且不含前导0),且这个两位数为质数.比如:153,可以使用数字3和数字1组成13,13是质数,满足神奇数.同样153可以找到31和53也为质数,只要找到一个质数即满足神奇数. 输入描述: 输入为两个整数a和b,代表[a, b]区间 (1 ≤ a ≤ b ≤ 10000). 输出描述: 输出为一个整数,表示区间内满足条件的整数个数 输入例子: 11 20 输出例子: 6 1 #in

(013)每日SQL学习:确定两个日期之间的工作日天数和计算一年周内各日期次数

1.确定两个日期之间的工作日天数 --确定两个日期之间的工作日天数with x0 as (select to_date('2018-01-01','yyyy-mm-dd') as 日期 from dual union all select to_date('2018-01-15','yyyy-mm-dd') as 日期 from dual ), x1 as --日期并列显示 (select min (日期) 开始日期,max(日期) 结束日期 from x0 ), x2 as --日期之间的天数

计算周几的程序(基姆拉尔森公式)

using System; namespace HELLO { class Program { int week; int y, m, d; static void Main(string[] args) { int y, m, d; Console.WriteLine("请输入年月日"); Console.WriteLine("现在请输入年份"); y = int.Parse(Console.ReadLine()); Console.WriteLine("

[转载]用c写PHP的扩展接口(php5,c++)

原文[http://bugs.tutorbuddy.com/php5cpp/php5cpp/] 第1节. 开始之前 开始前,我要说明:这篇文章所描述的主要是在UNIX的PHP环境上的. 另外一点我要说明的是:文中所介绍的方法在PHP 4.3.x和PHP 5下都是可行的.尽管我们在开始的时候会基于PHP5来介绍,但是你会发现这些方法在PHP 4.3.x中也是可行的. 我在本文中有一些约定... $PHP_HOME 是指你的PHP源代码的位置,如:你解开的PHP源代码包所放的位置.在我的系统中指的是

【转载】.NET(C#): Task.Unwrap扩展方法和async Lambda

.NET(C#): Task.Unwrap扩展方法和async Lambda 目录 Task.Unwrap基本使用 Task.Factory.StartNew和Task.Run的Unwrap操作 使用案例:LINQ中的async Lambda 返回目录 Task.Unwrap基本使用 这个扩展方法定义在TaskExtensions类型中,命名空间在System.Threading.Tasks.Unwrap会把嵌套的Task<Task>或者Task<Task<T>>的结果

【转载】利用向量积(叉积)计算三角形的面积和多边形的面积

向量的数量积和向量积: (1)  向量的数量积   (1)  向量的向量积 两个向量a和b的叉积(向量积)可以被定义为: 在这里θ表示两向量之间的角夹角(0° ≤ θ ≤ 180°),它位于这两个矢量 所定义的平面上. 向量积的模(长度)可以解释成以a和b为邻边的平行四边形的面积.求三角形ABC的面积,根据向量积的意义,得到: a=axi+ayj+azk; b=bxi+byj+bzk; a×b=(aybz-azby)i+(azbx-axbz)j+(axby-aybx)k,为了帮助记忆,利用三阶行