zoukankan      html  css  js  c++  java
  • C# Datetime 使用详解

    获得当前系统时间: DateTime dt = DateTime.Now;
    Environment.TickCount可以得到“系统启动到现在”的毫秒值
    DateTime now = DateTime.Now;
    Console.WriteLine(now.ToString("yyyy-MM-dd"));  //按yyyy-MM-dd格式输出s
    Console.WriteLine(dt.ToString());    //  26/11/2009 AM 11:21:30
    Console.WriteLine(dt.ToFileTime().ToString());   //   129036792908014024
    // Converts the value of the current System.DateTime object to a Windows file time
    Console.WriteLine(dt.ToFileTimeUtc().ToString());  //     129036792908014024
    // Converts the value of the current System.DateTime object to a Windows file time
    Console.WriteLine(dt.ToLocalTime().ToString());   //       26/11/2009 AM 11:21:30
    // Converts the value of the current System.DateTime object to local time.
    Console.WriteLine(dt.ToLongDateString().ToString());   //      2009年11月26日
    Console.WriteLine(dt.ToLongTimeString().ToString());  //      AM 11:21:30
    Console.WriteLine(dt.ToOADate().ToString());   //      40143.4732731597
    Console.WriteLine(dt.ToShortDateString().ToString());   //     26/11/2009
    Console.WriteLine(dt.ToShortTimeString().ToString());   //     AM 11:21
    Console.WriteLine(dt.ToUniversalTime().ToString());   //       26/11/2009 AM 3:21:30
    Console.WriteLine(dt.Year.ToString());   //        2009
    Console.WriteLine(dt.Date.ToString());   //        26/11/2009 AM 12:00:00
    Console.WriteLine(dt.DayOfWeek.ToString());  //       Thursday
    Console.WriteLine(dt.DayOfYear.ToString());   //       330
    Console.WriteLine(dt.Hour.ToString());       //        11
    Console.WriteLine(dt.Millisecond.ToString());   //     801        (毫秒)
    Console.WriteLine(dt.Minute.ToString());   //      21
    Console.WriteLine(dt.Month.ToString());   //       11
    Console.WriteLine(dt.Second.ToString());   //      30
    Console.WriteLine(dt.Ticks.ToString());   //       633948312908014024
    
    Console.WriteLine(dt.TimeOfDay.ToString());   //       12:29:51.5181524
    // Gets the time of day for this instance.
    // 返回 A System.TimeSpan that represents the fraction of the day that has elapsed since midnight.
    Console.WriteLine(dt.ToString());     //     26/11/2009 PM 12:29:51
    Console.WriteLine(dt.AddYears(1).ToString());    //         26/11/2010 PM 12:29:51
    Console.WriteLine(dt.AddDays(1.1).ToString());    //        27/11/2009 PM 2:53:51
    Console.WriteLine(dt.AddHours(1.1).ToString());    //       26/11/2009 PM 1:35:51
    Console.WriteLine(dt.AddMilliseconds(1.1).ToString());    //26/11/2009 PM 12:29:51
    Console.WriteLine(dt.AddMonths(1).ToString());    //        26/12/2009 PM 12:29:51
    Console.WriteLine(dt.AddSeconds(1.1).ToString());    //     26/11/2009 PM 12:29:52
    Console.WriteLine(dt.AddMinutes(1.1).ToString());    //     26/11/2009 PM 12:30:57
    Console.WriteLine(dt.AddTicks(1000).ToString());    //      26/11/2009 PM 12:29:51
    Console.WriteLine(dt.CompareTo(dt).ToString());    //       0
    Console.WriteLine(dt.Add(new TimeSpan(1,0,0,0)).ToString());    // 加上一个时间段
    (注:
    System.TimeSpan为一个时间段,构造函数如下
    public TimeSpan(long ticks); // ticks: A time period expressed in 100-nanosecond units.
                               //nanosecond:十亿分之一秒   new TimeSpan(10,000,000)        为一秒
    public TimeSpan(int hours, int minutes, int seconds);
    public TimeSpan(int days, int hours, int minutes, int seconds);
    public TimeSpan(int days, int hours, int minutes, int seconds, int milliseconds);
    )
    Console.WriteLine(dt.Equals("2005-11-6 16:11:04").ToString());     //        False
    Console.WriteLine(dt.Equals(dt).ToString());    //      True
    Console.WriteLine(dt.GetHashCode().ToString());    //       1103291775
    Console.WriteLine(dt.GetType().ToString());    //       System.DateTime
    Console.WriteLine(dt.GetTypeCode().ToString());    //       DateTime
      
    long Start = Environment.TickCount;   //单位是毫秒
    long End = Environment.TickCount;
    Console.WriteLine("Start is : "+Start);
    Console.WriteLine("End is : "+End);
    Console.WriteLine("The Time is {0}",End-Start);
    Console.WriteLine(dt.GetDateTimeFormats('s')[0].ToString());    //2009-11-26T13:29:06
    Console.WriteLine(dt.GetDateTimeFormats('t')[0].ToString());    //PM 1:29
    Console.WriteLine(dt.GetDateTimeFormats('y')[0].ToString());    //2009年11月
    Console.WriteLine(dt.GetDateTimeFormats('D')[0].ToString());    //2009年11月26日
    Console.WriteLine(dt.GetDateTimeFormats('D')[1].ToString());    //星期四, 26 十一月, 2009
    Console.WriteLine(dt.GetDateTimeFormats('D')[2].ToString());    //26 十一月, 2009
    Console.WriteLine(dt.GetDateTimeFormats('D')[3].ToString());    //星期四 2009 11 26
    Console.WriteLine(dt.GetDateTimeFormats('M')[0].ToString());    //26 十一月
    Console.WriteLine(dt.GetDateTimeFormats('f')[0].ToString());    //2009年11月26日 PM 1:29
    Console.WriteLine(dt.GetDateTimeFormats('g')[0].ToString());    //26/11/2009 PM 1:29
    Console.WriteLine(dt.GetDateTimeFormats('r')[0].ToString());    //Thu, 26 Nov 2009 13:29:06 GMT
    (注:
    常用的日期时间格式:
    格式 说明      输出格式 
    d 精简日期格式 MM/dd/yyyy 
    D 详细日期格式 dddd, MMMM dd, yyyy 
    f  完整格式    (long date + short time) dddd, MMMM dd, yyyy HH:mm 
    F 完整日期时间格式 (long date + long time) dddd, MMMM dd, yyyy HH:mm:ss 
    g 一般格式 (short date + short time) MM/dd/yyyy HH:mm 
    G 一般格式 (short date + long time) MM/dd/yyyy HH:mm:ss 
    m,M 月日格式 MMMM dd 
    s 适中日期时间格式 yyyy-MM-dd HH:mm:ss 
    t 精简时间格式 HH:mm 
    T 详细时间格式 HH:mm:ss
    )
    
    Console.WriteLine(string.Format("{0:d}", dt));    //28/12/2009
    Console.WriteLine(string.Format("{0:D}", dt));    //2009年12月28日
    Console.WriteLine(string.Format("{0:f}", dt));    //2009年12月28日 AM 10:29
    Console.WriteLine(string.Format("{0:F}", dt));    //2009年12月28日 AM 10:29:18
    Console.WriteLine(string.Format("{0:g}", dt));    //28/12/2009 AM 10:29
    Console.WriteLine(string.Format("{0:G}", dt));    //28/12/2009 AM 10:29:18
    Console.WriteLine(string.Format("{0:M}", dt));    //28 十二月
    Console.WriteLine(string.Format("{0:R}", dt));    //Mon, 28 Dec 2009 10:29:18 GMT
    Console.WriteLine(string.Format("{0:s}", dt));    //2009-12-28T10:29:18
    Console.WriteLine(string.Format("{0:t}", dt));    //AM 10:29
    Console.WriteLine(string.Format("{0:T}", dt));    //AM 10:29:18
    Console.WriteLine(string.Format("{0:u}", dt));    //2009-12-28 10:29:18Z
    Console.WriteLine(string.Format("{0:U}", dt));    //2009年12月28日 AM 2:29:18
    Console.WriteLine(string.Format("{0:Y}", dt));    //2009年12月
    Console.WriteLine(string.Format("{0}", dt));    //28/12/2009 AM 10:29:18
    Console.WriteLine(string.Format("{0:yyyyMMddHHmmssffff}", dt));    //200912281029182047
    
    计算2个日期之间的天数差
    DateTime dt1 = Convert.ToDateTime("2007-8-1");    
    DateTime dt2 = Convert.ToDateTime("2007-8-15");   
    TimeSpan span = dt2.Subtract(dt1);              
    int dayDiff = span.Days ;                    
    
    计算某年某月的天数
    int days = DateTime.DaysInMonth(2009, 8);       
    days = 31;                                      
    
    给日期增加一天、减少一天
    DateTime dt =DateTime.Now;
    dt.AddDays(1); //增加一天 dt本身并不改变
    dt.AddDays(-1);//减少一天 dt本身并不改变
    
    
    参数format格式详细用法:
    
    格式字符关联属性/说明
    dShortDatePattern
    DLongDatePattern
    f完整日期和时间(长日期和短时间)
    FFullDateTimePattern(长日期和长时间)
    g常规(短日期和短时间)
    G常规(短日期和长时间)
    m、MMonthDayPattern
    r、RRFC1123Pattern
    s使用当地时间的SortableDateTimePattern(基于ISO8601)
    tShortTimePattern
    TLongTimePattern
    uUniversalSortableDateTimePattern用于显示通用时间的格式
    U使用通用时间的完整日期和时间(长日期和长时间)
    y、YYearMonthPattern
    
    下面列出可被合并以构造自定义模式的模式:
    
    d月中的某一天。一位数的日期没有前导零。
    dd月中的某一天。一位数的日期有一个前导零。
    ddd周中某天的缩写名称,在AbbreviatedDayNames中定义。
    dddd周中某天的完整名称,在DayNames中定义。
    M月份数字。一位数的月份没有前导零。
    MM月份数字。一位数的月份有一个前导零。
    MMM月份的缩写名称,在AbbreviatedMonthNames中定义。
    MMMM月份的完整名称,在MonthNames中定义。
    y不包含纪元的年份。如果不包含纪元的年份小于10,则显示不具有前导零的年份。
    yy不包含纪元的年份。如果不包含纪元的年份小于10,则显示具有前导零的年份。
    yyyy包括纪元的四位数的年份。
    gg时期或纪元。如果要设置格式的日期不具有关联的时期或纪元字符串,则忽略该模式。
    h12小时制的小时。一位数的小时数没有前导零。
    hh12小时制的小时。一位数的小时数有前导零。
    H24小时制的小时。一位数的小时数没有前导零。
    HH24小时制的小时。一位数的小时数有前导零。
    m分钟。一位数的分钟数没有前导零。
    mm分钟。一位数的分钟数有一个前导零。
    s秒。一位数的秒数没有前导零。
    ss秒。一位数的秒数有一个前导零。
    f秒的小数精度为一位。其余数字被截断。
    ff秒的小数精度为两位。其余数字被截断。
    fff秒的小数精度为三位。其余数字被截断。
    ffff秒的小数精度为四位。其余数字被截断。
    fffff秒的小数精度为五位。其余数字被截断。
    ffffff秒的小数精度为六位。其余数字被截断。
    fffffff秒的小数精度为七位。其余数字被截断。
    t在AMDesignator或PMDesignator中定义的AM/PM指示项的第一个字符(如果存在)。
    tt在AMDesignator或PMDesignator中定义的AM/PM指示项(如果存在)。
    z时区偏移量(“+”或“-”后面仅跟小时)。一位数的小时数没有前导零。例如,太平洋标准时间是“-8”。
    zz时区偏移量(“+”或“-”后面仅跟小时)。一位数的小时数有前导零。例如,太平洋标准时间是“-08”。
    zzz完整时区偏移量(“+”或“-”后面跟有小时和分钟)。一位数的小时数和分钟数有前导零。例如,太平洋标准时间是“-08:00”。
    :在TimeSeparator中定义的默认时间分隔符。
    /在DateSeparator中定义的默认日期分隔符。
    %c其中c是格式模式(如果单独使用)。如果格式模式与原义字符或其他格式模式合并,则可以省略“%”字符。
    c其中c是任意字符。照原义显示字符。若要显示反斜杠字符,请使用“\”。
  • 相关阅读:
    VC获取系统时间、程序运行时间
    数学题
    最小费用流
    最大流模板
    计划
    算法竞赛入门经典 训练指南 之 图论(完全版持续更新)
    uva 11324 The Largest Clique 强连通分量求缩点构造DAG
    hdu 4288 Coder 一个很水的版本 >_<
    hoj 2939 Coin Question
    成都网络赛 1002 Control 1005 Food
  • 原文地址:https://www.cnblogs.com/tmdsleep/p/5700058.html
Copyright © 2011-2022 走看看