zoukankan      html  css  js  c++  java
  • C# Datetime类常用技巧

    C#类常用技巧

    //今天
    DateTime.Now.Date.ToShortDateString();
    //昨天,也就是今天的日期减一
    DateTime.Now.AddDays(-1).ToShortDateString();
    //明天,同理,加一
    DateTime.Now.AddDays(1).ToShortDateString();
    //本周(要知道本周第一天就得先知道今天是星期几,从而得知
    本周第一天就是几天前的那一天;每一周是从周日始至周六止[0-6])
    DateTime.Now.AddDays(Convert.ToDouble((0-Convert.ToInt16
    (DateTime.Now.DayOfWeek)))).ToShortDateString();
    //DateTime.Now.DayOfWeek获得今天是本周的第几天(0<=n<=6)
    DateTime.Now.AddDays(Convert.ToDouble((6-Convert.ToInt16
    (DateTime.Now.DayOfWeek)))).ToShortDateString();
    //中文显示星期几
    //由于DayOfWeek返回的是数字的星期几,需要把它转换成汉字以方便人们
    阅读,有些人会用SWITCH来一个一个地对照,其实我们有更优的策略
    string[] Day=new string[]{"星期日","星期一",星期二","星期三",
    "星期四","星期五","星期六"};
    Day[Convert.ToInt16(DateTime.Now.DayOfWeek)];//使用它来获取
    //上周,同理,一个周是7天,上周就是本周在减去7天,下周也是一样
    DateTime.Now.AddDays(Convert.ToDouble((0-Convert.ToInt16(
    DateTime.Now.DayOfWeek)))-7).ToShortDateString();
    DateTime.Now.AddDays(Convert.ToDouble((6-Convert.ToInt16(
    DateTime.Now.DayOfWeek)))-7).ToShortDateString();
    //下周
    DateTime.Now.AddDays(Convert.ToDouble((0-Convert.ToInt16(
    Datetime.Now.DayOfWeek)))+7).ToShortDateString();
    DateTime.Now.AddDays(Convert.ToDouble((6-Convert.ToInt16(
    DateTime.Now.DayOfWeek)))+7).ToShortDateString();
    //本月,本月的第一天是1号,最后一天就是下个月的1号再减一天
    DateTime.Now.Year.ToString()+DateTime.Now.Month.ToString(
    )+"1";//第一天
    DateTime.Parse(DateTime.Now.Year.ToString()+DateTime.Now.
    Month.ToString()+"1").AddMonths(1).AddDays(-1).ToShortDateString();
    //最后一天
    //巧用C#里ToString的字符格式化更简便
    DateTime.Now.ToString("yyyy-MM-01");
    DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(1).AddDays
    (-1).ToShortDateString();
    //上个月,减去一个月份
    DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(-1).ToShortDateString();
    DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();
    //下个月,加上一个月份
    DateTime.Parse(Datetime.Now.ToString("yyyy-MM-01")).AddMonths(1).ToShortDateString();
    DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(2).AddDays(-1).ToShortString();
    //7天后
    DateTime.Now.Date.ToShortDateString();
    DateTime.Now.AddDays(7).ToShortDateString();
    //7天前
    DateTime.Now.AddDays(-7).ToShortDateString();
    DateTime.Now.Date.ToShortDateString();
    //本年度,用ToString的字符格式化我们也很容易算出本年度的第一天和最后一天
    DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).ToShortDateString();
    DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(1).AddDays(-1).ToShortString();
    //上年度
    DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(-1).ToShortDateString();
    DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddDays(-1).ToShortDateString();
    //下年度
    DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(1).ToShortDateString();
    DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(2).AddDays(-1).ToShortDateString();
    //本季度,很多人都会觉得这里是难点,需要写个长长的过程来判断;其实不用的,我们都知道一年四个季度,一个季度三个月
    //首先我们把日期推到本季度第一个月,然后这个月的第一天就是本季度的第一天了
    DateTime.Now.AddMonths(0-((DateTime.Now.Month-1)%3)).ToString("yyyy-MM-01");
    //同理,本季度的最后一天就是下个季度的第一天减一
    DateTime.Parse.(DateTime.Now.AddMonth(3-((DateTime.Now.Month-1)%3)).ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();
    //下季度
    DateTime.Now.AddMonths(3-((DateTime.Now.Month-1)%3)).ToString("yyyy-MM-01");
    DateTime.Parse(DateTime.Now.AddMonths(6-((DateTime.Now.Month-1)%3)).ToString("yyyy-MM-01").AddDays(-1).ToShortDateString();
    //上季度
    DateTime.Now.AddMonths(-3-((DateTime.Now.Month-1)%3)).ToString("yyyy-MM-01");
    DateTime.Parse(DateTime.Now.AddMonths(0-((DateTime.Now.Month-1)%3)).ToString("yyyy-MM-01").AddDays(-1).ToShortDateString();
    //获得当月有多少天
    int m=System.DateTime.DaysInMonth(System.DateTime.Now.Year,System.DateTime.Now.Month);
    //获取某月的实际工作日(即不包括周六日)
    //int days=getDays(System.DateTime.Now);调用即可获得
    private int getDays(System.DateTime date1)
    {
    int m=System.DateTime.DaysInMonth(date1.Year,date1.Month);
    int mm=0;
    for(int i=1;i<=m;i++)
    {
    System.DateTime date=Convert.ToDateTime(date1.Year+"-"+date1.Month+"-"+i);
    switch(date.DayOfWeek)
    {
    case System.DayOfWeek.Monday:
    case System.DayOfWeek.Tuessday:
    case System.DayOfWeek.Wednesday:
    case System.DayOfWeek.Thursday:
    case System.DayOfWeek.Friday:
    mm=mm+1;
    break;
    }
    }
    return mm;
    }
    //获得任意两日期之间的有效工作日(不包括周六日)
    DateTime date1=Convert.ToDateTime("2008-8-8");
    DateTime date2=Convert.ToDateTime("2008-10-1");
    int days=getDays(date1,date2);
    //调用如上即可获得
    private int getDays(System.DateTime date1,System.DateTime date2)
    {
    string m=Microsoft.VisualBasic.DateAndTime.DateDiff(EnumDateCompare.day,date1,date2).ToString("f0");
    int mm=0;
    for(int i=0;i<=Convert.ToInt32(m);i++)
    {
    System.DateTime date=Convert.ToDateTime(date1.AddDays(i));
    switch(date.DayOfWeek)
    {
    case System.DayOfWeek.Monday:
    case System.DayOfWeek.Tuesday:
    case System.DayOfWeek.Wednesday:
    case System.DayOfWeek.Thursday:
    case System.DayOfWeek.Friday:
    mm=mm+1;
    break;
    }
    }
    return mm;
    }
    //格式输出
    private void Page_Load(object sender,System.EventArgs e)
    {
    System.Globalization.DateTimeFormatInfo myDTFI=new System.Globalization.CultureInfo("en-US",false).DateTimeFormat;
    //中国为zh-cn
    DateTime myDT=System.DateTime.Now;
    Response.Write(myDT.ToString("f",myDTFI));
    //获得本周的周六和周日
    public static void ConvertDateToWeek(DateTime date,out DateTime firstdate,out DateTime lastdate)
    {
    DateTime first System.DateTime.Now;
    DateTime last=System.DateTime.Now;
    switch(date.DayOfWeek)
    {
    case System.DayOfWeek.Monday:
    first=date.AddDays(-1);
    last=date.AddDays(5);
    break;
    case System.DayOfWeek.Tuesday:
    first=date.AddDays(-2);
    last=date.AddDays(4);
    break;
    case System.DayOfWeek.Wednesday:
    first=date.AddDays(-3);
    last=date.AddDays(3);
    break;
    case System.DayOfWeek.Thursday:
    first=date.AddDays(-4);
    last=date.AddDays(2);
    break;
    case System.DayOfWeek.Friday:
    first=date.AddDays(-5);
    last=date.AddDays(1);
    break;
    case System.DayOfWeek.Saturday:
    first=dateAddDays(-6);
    last=date;
    break;
    case System.DayOfWeek.Sunday:
    first=date;
    last=date.AddDays(6);
    break;
    }
    firstdate=first;
    lastdate=last;
    }
    //调用
    DateTime firstdate=System.DateTime.Now;
    DateTime lastdate=System.Datetime.Now;
    ConvertDateToWeek(date,out firstdate,out lastdate);
    //获得当前日期是该年度的第几周
    DateTime dt=Convert.ToDateTime("2008-8-8");
    int weeks=dt.DayOfYear/7+1;

  • 相关阅读:
    省常中模拟 Test4
    省常中模拟 Test3 Day1
    省常中模拟 Test3 Day2
    省常中模拟 Test1 Day1
    树型动态规划练习总结
    noip2010提高组题解
    noip2003提高组题解
    noip2009提高组题解
    noip2004提高组题解
    noip2002提高组题解
  • 原文地址:https://www.cnblogs.com/hking911218/p/4460673.html
Copyright © 2011-2022 走看看