zoukankan      html  css  js  c++  java
  • 日期相关

    1、http://www.cnblogs.com/silverLee/archive/2009/11/04/1596053.html

    2、http://www.cnblogs.com/zhaoweiqiu/archive/2011/11/29/2267344.html

    3、http://bbs.csdn.net/topics/90206205

    4、http://www.cnblogs.com/guothree2003/archive/2008/06/17/1224295.html

    总结:
      1、String类型---->DateTime类型
        a.Convert.ToDateTime();----支持“2011-01-02”,不支持“20110102”字符串
         例:string strResult=Convert.ToDateTime("2011-02-01");

        b.DateTime.Parse();   ----支持“2011-01-02”,不支持“20110102”字符串
           例:string strResult=DateTime.Parse("2011-02-01");
             string strResult=DateTime.Parse("2022年9月1日", new System.Globalization.CultureInfo("zh-CN", true));

        c.DateTime.ParseExact();----支持“20110102”、"2011-01-02"等
           例:string strResult=DateTime.ParseExact("20110102", "yyyyMMdd", null);
           string strResult=DateTime.ParseExact("2011-01-02", "yyyy-MM-dd", null);即:前后格式要保持一致
      2、DateTime类型-->指定格式-->String类型
           参考:上述博客
      3、如何获得某个月有多少天
             DateTime.DaysInMonth(year,month);
      4、如何获得两个DateTime之间的差 (是指相差的天数)
             TimeSpan timeSpan  = dt1-dt2;
             可以得到相差的天数,小时数, 分数,秒数。 并且支持负数(当dt1 早于dt2时)
      5、注意表日期格式时,大小写敏感
          hh ---12小时制
          HH ---24小时制
    附加:
      加速记忆--在时间格式中,只有月份(M)是大写,如果是24小时制的话,那么小时(H)也是大写。其他的都是小写!!

    ---------------------------------------------------------------------------------------------------------
    以下是转载部分,仅为便于自己查看。

    第一部分:
    DataTime nowDate = DataTime.Now;
    nowDate.toString("r");     效果为:  Wed, 22 Jul 2009 16:24:33 GMT
    找遍了整个网络,原来就这样。。。。
    郁闷中。。。
    为此找到所有的时间格式化

    d ShortDatePattern
    D LongDatePattern
    f 完整日期和时间(长日期和短时间)
    F FullDateTimePattern(长日期和长时间)
    g 常规(短日期和短时间)
    G 常规(短日期和长时间)
    m、M MonthDayPattern
    r、R RFC1123Pattern
    s 使用当地时间的 SortableDateTimePattern(基于 ISO 8601)
    t ShortTimePattern
    T LongTimePattern
    u UniversalSortableDateTimePattern 用于显示通用时间的格式
    U 使用通用时间的完整日期和时间(长日期和长时间)
    y、Y YearMonthPattern

    下表列出了可被合并以构造自定义模式的模式
    ========================================
    这些模式是区分大小写的;例如,识别“MM”,但不识别“mm”。如果自定义模式包含空白字符或用单引号括起来的字符,则输出字符串页也将包含这些字符。未定义为格式模式的一部分或未定义为格式字符的字符按其原义复制。

    格式模式 说明 :
    d 月中的某一天。一位数的日期没有前导零。
    dd 月中的某一天。一位数的日期有一个前导零。
    ddd 周中某天的缩写名称,在 AbbreviatedDayNames 中定义。
    dddd 周中某天的完整名称,在 DayNames 中定义。
    M 月份数字。一位数的月份没有前导零。
    MM 月份数字。一位数的月份有一个前导零。
    MMM 月份的缩写名称,在 AbbreviatedMonthNames 中定义。
    MMMM 月份的完整名称,在 MonthNames 中定义。
    y 不包含纪元的年份。如果不包含纪元的年份小于 10,则显示不具有前导零的年份。
    yy 不包含纪元的年份。如果不包含纪元的年份小于 10,则显示具有前导零的年份。
    yyyy 包括纪元的四位数的年份。
    gg 时期或纪元。如果要设置格式的日期不具有关联的时期或纪元字符串,则忽略该模式。
    h 12 小时制的小时。一位数的小时数没有前导零。
    hh 12 小时制的小时。一位数的小时数有前导零。
    H 24 小时制的小时。一位数的小时数没有前导零。
    HH 24 小时制的小时。一位数的小时数有前导零。
    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 是任意字符。照原义显示字符。若要显示反斜杠字符,请使用“\”。

    只有上面第二个表中列出的格式模式才能用于创建自定义模式;在第一个表中列出的标准格式字符不能用于创建自定义模式。自定义模式的长度至少为两个字符;例如,

    DateTime.ToString( "d") 返回 DateTime 值;“d”是标准短日期模式。
    DateTime.ToString( "%d") 返回月中的某天;“%d”是自定义模式。
    DateTime.ToString( "d ") 返回后面跟有一个空白字符的月中的某天;“d”是自定义模式。

    比较方便的是,上面的参数可以随意组合,并且不会出错,多试试,肯定会找到你要的时间格式
    如要得到2005年06月 这样格式的时间
    可以这样写:
    date.ToString("yyyy年MM月", DateTimeFormatInfo.InvariantInfo)
    如此类推.

    下面列出一些Asp.net中具体的日期格式化用法:
    ============================================
    1.绑定时格式化日期方法:


    2.数据控件如DataGrid/DataList等的件格式化日期方法:
    e.Item.Cell[0].Text = Convert.ToDateTime(e.Item.Cell[0].Text).ToShortDateString();

    3.用String类转换日期显示格式:
    String.Format( "yyyy-MM-dd ",yourDateTime);

    4.用Convert方法转换日期显示格式:
    Convert.ToDateTime("2005-8-23").ToString

    ("yyMMdd",System.Globalization.DateTimeFormatInfo.InvariantInfo); //支持繁体数据库

    5.直接用ToString方法转换日期显示格式:
    DateTime.Now.ToString("yyyyMMddhhmmss");
    DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss")

    6.只显示年月
    DataBinder.Eval(Container.DataItem,"starttime","{0:yyyy-M}")

    7.显示时间所有部分,包括:年月日时分秒
    DataFormatString='{0:yyyy-MM-dd HH24:mm:ss}'>


    用DateTime.ToString(string format)输出不同格式的日期

    DateTime.ToString() 函数有四个重载。一般用得多的就是不带参数的那个了。殊不知,DateTime.ToString(string format)功能更强大,能输出不同格式的日期。以下把一些情况罗列出来,供大家参考。有些在MSDN上有的就没有列出来了。

    1.         y代表年份,注意是小写的y,大写的Y并不代表年份。

    2.         M表示月份。

    3.         d表示日期,注意D并不代表什么。

    4.         h或H表示小时,h用的是12小时制,H用的是24小时制。

    5.         m表示分钟。

    6.         s表示秒。注意S并不代表什么。

    格式
    输出
    示例



    y
    7
    string yy = DateTime.Now.ToString("y-MM")

    yy="7-05"

    yy
    07
    string yy = DateTime.Now.ToString("yy-MM")

    yy="07-05"

    yyy或更多的y
    1984
    string yy = DateTime.Now.ToString("yyyy");

    yy="2007"



    M
    5.
    string mon = DateTime.Parse("1984-05-09")ToString("yyyy-M")

    mon = "1984-5"

    MM
    05.
    string mon = DateTime.Parse("1984-05-09")ToString("MM")

    mon = "05"

    MMM
    如果是中文版的操作系统,则会输出:五月.

    如果是英文操作系统,则输入月份前三个字母的简写:May
    string mon = DateTime.Parse("2006-07-01").ToString("MMM")

    英文版操作系统:Jul

    中文版操作系统:七月

    MMMM或更多的M
    如果是中文版的操作系统,则会输出:五月.

    如果是英文操作系统,则输入月份的全写
    string mon = DateTime.Parse("2006-07-01").ToString("MMM")

    英文版操作系统:July

    中文版操作系统:七月

    日期或星期

    d
    9
    string dd= DateTime.Parse("1984-05-09")ToString("d")

    dd= "9"


    dd
    09
    string dd= DateTime.Parse("1984-05-09")ToString("dd")

    dd= "09"

    ddd
    如果是中文版的操作系统,则会输出星期,如星期三。.

    如果是英文操作系统,则输出星期的简写:如

    Wed
    string dd = DateTime.Parse("2006-07-01").ToString("ddd")

    英文版操作系统:Wed

    中文版操作系统:星期三

    dddd或更多的d
    如果是中文版的操作系统,则会输出星期,如星期三。.

    如果是英文操作系统,则输出星期:如

    Wednesday
    string dd = DateTime.Parse("2006-07-01").ToString("dddd")

    英文版操作系统:Wednesday

    中文版操作系统:星期三

    小时

    h
    小时范围:1-12
    string hh = DateTime.Now.ToString(“h”);

    hh = 8

    hh或更多的h
    小时范围:1-12
    string hh = DateTime.Now.ToString(“hh”);

    hh = 08

    H
    小时范围:0-23
    string hh = DateTime.Now.ToString(“yyyy-H”);

    hh = 2006-8

    HH或更多的H
    小时范围:0-23
    string hh = DateTime.Now.ToString(“yyyy-HH”);

    hh = 2006-08

    string hh = DateTime.Pare(“2006-7-4 18:00:00”).ToString(“yyyy-HH”);

    hh = 2006-18

    分钟

    m
    6
    string mm = DateTime.Now.ToString("yyyy-MM-dd-m");

    mm = “2006-07-01-6”;

    mm或更多的m
    06
    string mm = DateTime.Now.ToString("yyyy-MM-dd-mm");

    mm = “2006-07-01-06”;



    s
    6
    string mm = DateTime.Now.ToString("yyyy-MM-dd-s");

    mm = “2006-07-01-6”;

    ss或更多的s
    06
    string mm = DateTime.Now.ToString("yyyy-MM-dd-ss");

    mm = “2006-07-01-06”;

    第二部分:
    DataTime格式大全

    DateTime dt = DateTime.Now;
        Label1.Text = dt.ToString();//2005-11-5 13:21:25
        Label2.Text = dt.ToFileTime().ToString();//127756416859912816
        Label3.Text = dt.ToFileTimeUtc().ToString();//127756704859912816
        Label4.Text = dt.ToLocalTime().ToString();//2005-11-5 21:21:25
        Label5.Text = dt.ToLongDateString().ToString();//2005年11月5日
        Label6.Text = dt.ToLongTimeString().ToString();//13:21:25
        Label7.Text = dt.ToOADate().ToString();//38661.5565508218
        Label8.Text = dt.ToShortDateString().ToString();//2005-11-5
        Label9.Text = dt.ToShortTimeString().ToString();//13:21
        Label10.Text = dt.ToUniversalTime().ToString();//2005-11-5 5:21:25
    //    2005-11-5 13:30:28.4412864
        Label1.Text = dt.Year.ToString();//2005
        Label2.Text = dt.Date.ToString();//2005-11-5 0:00:00
        Label3.Text = dt.DayOfWeek.ToString();//Saturday
        Label4.Text = dt.DayOfYear.ToString();//309
        Label5.Text = dt.Hour.ToString();//13
        Label6.Text = dt.Millisecond.ToString();//441
        Label7.Text = dt.Minute.ToString();//30
        Label8.Text = dt.Month.ToString();//11
        Label9.Text = dt.Second.ToString();//28
        Label10.Text = dt.Ticks.ToString();//632667942284412864
        Label11.Text = dt.TimeOfDay.ToString();//13:30:28.4412864
        Label1.Text = dt.ToString();//2005-11-5 13:47:04
        Label2.Text = dt.AddYears(1).ToString();//2006-11-5 13:47:04
        Label3.Text = dt.AddDays(1.1).ToString();//2005-11-6 16:11:04
        Label4.Text = dt.AddHours(1.1).ToString();//2005-11-5 14:53:04
        Label5.Text = dt.AddMilliseconds(1.1).ToString();//2005-11-5 13:47:04
        Label6.Text = dt.AddMonths(1).ToString();//2005-12-5 13:47:04
        Label7.Text = dt.AddSeconds(1.1).ToString();//2005-11-5 13:47:05
        Label8.Text = dt.AddMinutes(1.1).ToString();//2005-11-5 13:48:10
        Label9.Text = dt.AddTicks(1000).ToString();//2005-11-5 13:47:04
        Label10.Text = dt.CompareTo(dt).ToString();//0
        Label11.Text = dt.Add(?).ToString();//问号为一个时间段
        Label1.Text = dt.Equals("2005-11-6 16:11:04").ToString();//False
        Label2.Text = dt.Equals(dt).ToString();//True
        Label3.Text = dt.GetHashCode().ToString();//1474088234
        Label4.Text = dt.GetType().ToString();//System.DateTime
        Label5.Text = dt.GetTypeCode().ToString();//DateTime
      
        Label1.Text = dt.GetDateTimeFormats('s')[0].ToString();//2005-11-05T14:06:25
        Label2.Text = dt.GetDateTimeFormats('t')[0].ToString();//14:06
        Label3.Text = dt.GetDateTimeFormats('y')[0].ToString();//2005年11月
        Label4.Text = dt.GetDateTimeFormats('D')[0].ToString();//2005年11月5日
        Label5.Text = dt.GetDateTimeFormats('D')[1].ToString();//2005 11 05
        Label6.Text = dt.GetDateTimeFormats('D')[2].ToString();//星期六 2005 11 05
        Label7.Text = dt.GetDateTimeFormats('D')[3].ToString();//星期六 2005年11月5日
        Label8.Text = dt.GetDateTimeFormats('M')[0].ToString();//11月5日
        Label9.Text = dt.GetDateTimeFormats('f')[0].ToString();//2005年11月5日 14:06
        Label10.Text = dt.GetDateTimeFormats('g')[0].ToString();//2005-11-5 14:06
        Label11.Text = dt.GetDateTimeFormats('r')[0].ToString();//Sat, 05 Nov 2005 14:06:25 GMT

        Label1.Text =   string.Format("{0:d}",dt);//2005-11-5
        Label2.Text =   string.Format("{0:D}",dt);//2005年11月5日
        Label3.Text =   string.Format("{0:f}",dt);//2005年11月5日 14:23
        Label4.Text =   string.Format("{0:F}",dt);//2005年11月5日 14:23:23
        Label5.Text =   string.Format("{0:g}",dt);//2005-11-5 14:23
        Label6.Text =   string.Format("{0:G}",dt);//2005-11-5 14:23:23
        Label7.Text =   string.Format("{0:M}",dt);//11月5日
        Label8.Text =   string.Format("{0:R}",dt);//Sat, 05 Nov 2005 14:23:23 GMT
        Label9.Text =   string.Format("{0:s}",dt);//2005-11-05T14:23:23
        Label10.Text = string.Format("{0:t}",dt);//14:23
        Label11.Text = string.Format("{0:T}",dt);//14:23:23
        Label12.Text = string.Format("{0:u}",dt);//2005-11-05 14:23:23Z
        Label13.Text = string.Format("{0:U}",dt);//2005年11月5日 6:23:23
        Label14.Text = string.Format("{0:Y}",dt);//2005年11月
        Label15.Text = string.Format("{0}",dt);//2005-11-5 14:23:23
        Label16.Text = string.Format("{0:yyyyMMddHHmmssffff}",dt);

  • 相关阅读:
    EditPlus使用技巧
    PL/SQL Dev的问题
    解决httpModules 未能从程序集 XX 加载类型 XXX 的错误
    IE浏览器无法显示背景,字体显示很大问题的解决办法[转]
    如何在Outlook2003中加入农历节气
    再谈Oracle在Windows下的权限问题
    Vista下安装布署注册的问题解决
    [转]关于管理的经典故事(员工激励)
    开始应用AJAX
    Aptana IDE 中文乱码的问题解决
  • 原文地址:https://www.cnblogs.com/wupeiqi/p/3203225.html
Copyright © 2011-2022 走看看