c#格式化日期_c#怎么格式化日期格式 - CSDN
  • C#日期格式化 日期转化一 为了达到不同的显示效果有时,我们需要对时间进行转化,默认格式为:2007-01-03 14:33:34 ,要转化为其他格 式,要用到DateTime.ToString的方法(String, IFormatProvider),如下所示: ...

     

    C#日期格式化

    日期转化一

    为了达到不同的显示效果有时,我们需要对时间进行转化,默认格式为:2007-01-03 14:33:34 ,要转化为其他格

    式,要用到DateTime.ToString的方法(String, IFormatProvider),如下所示:

    using System;
    using System.Globalization;
    String format="D";
    DateTime date=DataTime,Now;
    Response.Write(date.ToString(format, DateTimeFormatInfo.InvariantInfo));

    结果输出
    Thursday, June 16, 2005

    参数format格式详细用法:

    格式字符 关联属性/说明
    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)

    日期转化二

    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

    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); 
    C#比较两时间大小
    1、比较时间大小的实验
        string st1="12:13";
        string st2="14:14";
        DateTime dt1=Convert.ToDateTime(st1);
        DateTime dt2=Convert.ToDateTime(st2);
        DateTime dt3=DateTime.Now;
        if(DateTime.Compare(dt1,dt2)>0)
         msg.Text=st1+">"+st2;
        else
         msg.Text=st1+"<"+st2;
        msg.Text+="\r\n"+dt1.ToString();
        if(DateTime.Compare(dt1,dt3)>0)
         msg.Text+="\r\n"+st1+">"+dt3.ToString();
        else
         msg.Text+="\r\n"+st1+"<"+dt3.ToString();
    2、计算两个时间差值的函数,返回时间差的绝对值:
             private string DateDiff(DateTime DateTime1,DateTime DateTime2)
             {
                 string dateDiff=null;
                 try
                 {
                     TimeSpan ts1=new   TimeSpan(DateTime1.Ticks);
                     TimeSpan ts2=new   TimeSpan(DateTime2.Ticks);
                     TimeSpan ts=ts1.Subtract(ts2).Duration();
                     dateDiff=ts.Days.ToString()+"天"
                             +ts.Hours.ToString()+"小时"
                             +ts.Minutes.ToString()+"分钟"
                             +ts.Seconds.ToString()+"秒";
                 }
                 catch
                 {
                 }
                 return dateDiff;
             }
    3、实现计算DateTime1-36天=DateTime2的功能
        TimeSpan ts=new TimeSpan(40,0,0,0);
        DateTime dt2=DateTime.Now.Subtract(ts);
        msg.Text=DateTime.Now.ToString()+"-"+ts.Days.ToString()+"天\r\n";
        msg.Text+=dt2.ToString();

    展开全文
  • string.Format();格式化为日期形式
    DateTime dt = new DateTime(2017,4,1,13,16,32,108);
    string.Format("{0:y yy yyy yyyy}",dt); //17 17 2017 2017
    string.Format("{0:M MM MMM MMMM}", dt);//4  04 四月 四月
    string.Format("{0:d dd ddd dddd}", dt);//1  01 周六 星期六
    string.Format("{0:t tt}", dt);//下 下午
    string.Format("{0:H HH}", dt);//13 13
    string.Format("{0:h hh}", dt);//1  01
    string.Format("{0:m mm}", dt);//16 16
    string.Format("{0:s ss}", dt);//32 32
    string.Format("{0:F FF FFF FFFF FFFFF FFFFFF FFFFFFF}", dt);//1 1  108 108  108   108    108
    string.Format("{0:f ff fff ffff fffff ffffff fffffff}", dt);//1 10 108 1080 10800 108000 1080000
    string.Format("{0:z zz zzz}", dt);//+8 +08 +08:00
    
    string.Format("{0:yyyy/MM/dd HH:mm:ss.fff}",dt);  //2017/04/01 13:16:32.108
    string.Format("{0:yyyy/MM/dd dddd}", dt);      //2017/04/01 星期六
    string.Format("{0:yyyy/MM/dd dddd tt hh:mm}", dt); //2017/04/01 星期六 下午 01:16
    string.Format("{0:yyyyMMdd}", dt);         //20170401
    string.Format("{0:yyyy-MM-dd HH:mm:ss.fff}", dt); //2017-04-01 13:16:32.108

    除去string.Format()可以对日期进行格式化之外,*.ToString()也可以实现相同的效果:

    DateTime dt = new DateTime(2017,4,1,13,16,32,108);
    dt.ToString("y yy yyy yyyy");//17 17 2017 2017
    dt.ToString("M MM MMM MMMM");//4  04 四月 四月
    dt.ToString("d dd ddd dddd");//1  01 周六 星期六
    dt.ToString("t tt");//下 下午
    dt.ToString("H HH");//13 13
    dt.ToString("h hh");//1  01
    dt.ToString("m mm");//16 16
    dt.ToString("s ss");//32 32
    dt.ToString("F FF FFF FFFF FFFFF FFFFFF FFFFFFF");//1 1  108 108  108   108    108
    dt.ToString("f ff fff ffff fffff ffffff fffffff");//1 10 108 1080 10800 108000 1080000
    dt.ToString("z zz zzz");//+8 +08 +08:00
    
    dt.ToString("yyyy/MM/dd HH:mm:ss.fff"); //2017/04/01 13:16:32.108
    dt.ToString("yyyy/MM/dd dddd");      //2017/04/01 星期六
    dt.ToString("yyyy/MM/dd dddd tt hh:mm"); //2017/04/01 星期六 下午 01:16
    dt.ToString("yyyyMMdd");         //20170401
    dt.ToString("yyyy-MM-dd HH:mm:ss.fff"); //2017-04-01 13:16:32.108
    展开全文
  • c# *期函数 DateTime dt = DateTime.Now; Label1.Text = dt.ToString();//2005-11-5 13:21:25 Label2.Text = dt.ToFileTime().ToString();//127756416859912816 Label3.Text = dt.ToFileTimeUtc...
    c# *期函数
    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

    或者dt.ToString("yyyy年MM月dd*");//2005年11月5*
    dt.ToString("yyyy-MM-dd");//2005-11-5*
    以此类推……

    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); //yyyymm等可以设置,比如Label16.Text = string.Format("{0:yyyyMMdd}",dt);
    绑定也适用:例:<%# string.Format("{0:yyyy.MM.dd}",Eval("sj"))%>
    展开全文
  • 字符串格式化这部分内容是我们经常用到的,如“2008-03-26”日期格式、“28.20”数字格式。  举一个例子,我们有时需要将订单号“12”显示为“00000012”这种样式(不足8位前面补0),就可以使用下面的方法:  ...
    字符串格式化这部分内容是我们经常用到的,如“2008-03-26”日期格式、“28.20”数字格式。 
    举一个例子,我们有时需要将订单号“12”显示为“00000012”这种样式(不足8位前面补0),就可以使用下面的方法: 

    int originalCode = 12; 
    Response.Write(string.Format("{0:00000000}", originalCode)); 
    或者 

    int originalCode = 12; 
    Response.Write(originalCode.ToString("00000000")); 
    又如我们在使用日期做为某种关键字时,比如图片的文件名,一般是到秒级,如“20080326082708”

    Response.Write(DateTime.Now.ToString("yyyyMMddHHmmss")); // 输出:20080326082708 
    这样如果并发操作比较多的话,就会产生文件重名的现象。我们可以将日期精确到1/10000000秒,这样的话重名的可能性就很小了。 

    Response.Write(DateTime.Now.ToString("yyyyMMddHHmmssfffffff"));// 输出:200803260827087983268 
    ========================================================== 

    格式 
    基本内容是:可以在 Console.WriteLine(以及 String.Format,它被 Console.WriteLine 调用)中的格式字符串内的括号中放入非索引数字的内容。格式规范的完整形式如下: 

    {index [, width][:formatstring]} 

    其中,index 是此格式程序引用的格式字符串之后的参数,从零开始计数;width(如果有的话)是要设置格式的字段的宽度(以空格计)。width 取正数表示结果右对齐,取负数则意味着数字在字段中左对齐。(请参阅下面的前两个示例。) 

    formatstring 是可选项,其中包含有关设置类型格式的格式说明。如果对象实现 IFormattable,formatstring 就会传递给对象的 Format 方法(在 Beta 2 和后续版本中,该方法的签名变为 ToString(string, IFormatProvider),但功能不变)。如果对象不实现 IFormattable,就会调用 Object.ToString(),而忽略 formatstring。 

    另请注意,在 Beta 1 中不区分当前语言的 ToString 在 Beta 2 和后续版本中“将”区分语言。例如,对于用“.”分隔千位,用“,”分隔小数的国家,1,234.56 将会格式化成 1.234,56。如果您需要结果无论在什么语言下都是一样的,就请使用 CultureInfo.InvariantCulture 作为语言。 

    若要获取有关格式的完整信息,请查阅“.NET 框架开发人员指南”中的格式概述(英文)。 

    数字格式 
    请注意,数字的格式是区分语言的:分隔符以及分隔符之间的空格,还有货币符号,都是由语言决定的 — 默认情况下,是您计算机上的默认语言。默认语言与执行线程相关,可以通过 Thread.CurrentThread.CurrentCulture 了解和设置语言。有几种方法,可以不必仅为一种给定的格式操作就立即更改语言。 

    内置类型的字母格式 
    有一种格式命令以单个字母开头,表示下列设置: 

    G—常规,E 或 F 中较短的 

    F—浮点数,常规表示法 

    E—用 E 表示法表示的浮点数(其中,E 代表 10 的次幂) 

    N—带有分隔符的浮点数(在美国为逗号) 

    C—货币,带有货币符号和分隔符(在美国为逗号) 

    D—十进制数,仅用于整型 

    X—十六进制数,仅用于整型 

    字母可以后跟一个数字,根据字母的不同,该数字可以表示总位数、有效位数或小数点后面的位数。

    下面是字母格式的一些示例: 

    double pi = Math.PI; 
    double p0 = pi * 10000; 
    int i = 123; 
    Console.WriteLine("浮点格式,无分隔符(逗号)"); 
    Console.WriteLine("pi, Left {0, -25}", pi); // 3.1415926535897931 
    Console.WriteLine("p0, Rt. {0, 25}", p0); // 3.1415926535897931 
    Console.WriteLine("pi, E {0, 25:E}", pi); // 3.1416E+000 
    Console.WriteLine("使用 E 和 F 格式,小数点后保留 n(此处为 4)位"); 
    Console.WriteLine("pi, E4 {0, 25:E4}", pi); // 3.1416E+000 
    Console.WriteLine("pi, F4 {0, 25:F4}", pi); // 3.1416 
    Console.WriteLine("使用 G 格式,保留 4 位有效数字——如果需要请使用 E 格式"); 
    Console.WriteLine("pi, G4 {0, 25:G4}", pi); // 3.142 
    Console.WriteLine("p0, G4 {0, 25:G4}", p0); // 3.142E4 
    Console.WriteLine("N 和 C 格式带有逗号(分隔符)," + 
    "默认小数点后保留两位,四舍五入。"); 
    Console.WriteLine("p0, N {0, 25:N}", p0); // 31,415.93 
    Console.WriteLine("p0, N4 {0, 25:N4}", p0); // 31,415.9265 
    Console.WriteLine("p0, C {0,25:C}", pi); // $3.14 
    Console.WriteLine("D 和 X 格式仅用于整型," + 
    "非整型将产生格式异常——X 指十六进制"); 
    Console.WriteLine("i, D {0, 25:D}", i ); // 123 
    Console.WriteLine("i, D7 {0, 25:D7}", i ); // 0000123 
    Console.WriteLine("i, X {0, 25:X}", i ); // 7B 
    Console.WriteLine("i, X8 {0, 25:X8}", i ); // 0000007B 

    图片格式 
    与字母格式不同,formatstring 可以包含“图片格式”。下面是从代码中摘录的几个实例。(这类似于 Basic 中的“Print Using”语句。)图片格式功能甚至包括以不同方式设置负数、正数和零的格式的能力。还有几个图片格式功能,下面的示例中未包括在内。有关详细信息,请参阅“.NET 框架开发人员指南”或文档中的主题图片格式数字串(英文)。 

    在下例中您将注意到,好心的博士既使用了“#”字符,又使用了“0”字符。如果相应的数字是前导零或尾随零,“#”字符就会替换为空值。无论相应数字的值如何,“0”字符都会被替换为零字符 — 因此,数字将会被零填补。句号(如果有的话)表示小数分隔符的位置。 

    那么,为什么要同时使用这些字母,比如“###0.##”? 如果要设置格式的值恰好为零,“#” 图片字符就被替换为“无”(连零字符也不是)。您可能“总是”希望在小数点的左边至少有一个“0”,否则,如果值为零,字段就没有输出。换言之,仅包含“#”字符,一个“0”也没有的格式常被认为是一个编程错误。 

    逗号有两种用法:如果一个逗号或一组逗号紧跟在句号的左边(或者没有句号时在结尾),它们就会告诉格式化程序分隔 10 ** (3 * n) 所显示的数字,其中,n 是逗号的个数。换言之,数字按千位、百万位、十亿位等分隔。 

    如果逗号的右侧至少有一个“0”或“#”占位符,它就会告诉格式化程序在各数位组之间放置适当的组分隔符字符(在美国为逗号。)(在美国,每三个数位算一组。) 

    可以设置百分比的格式,方法是在图片中放入“%”。“%”将在指定的位置显示,在显示前数字将被乘以 100(这样,0.28 就变成了 28%)。 

    如果希望将图片格式用于指数表示法,可以指定“e”或“E”后跟加号或减号,再后跟任意个零,比如“E+00”或“e-000”。如果使用“e”,则显示小写“e” 。如果使用“E”,则显示大写“E” 。如果使用加号,则指数的符号总是出现。如果使用减号,则符号只有在指数为负数时才会显示。(Beta 1 版在处理“-”时有问题,该符号会导致负号总是出现。) 

    根据要设置格式的数字的符号,还有一个条件格式。在格式字符串中仅包含两个或三个独立的格式,它们由分号分隔。如果有两个格式,则第一个将用于非负数,第二个用于负数。如果有三个格式,则第一个将用于正数,第二个用于负数,第三个用于零。 

    可以在格式字符串中包含文字字符。如果所需的字符具有特殊意义,请在其前面使用反斜杠符号,使其“转义”。例如,如果希望在不乘以 100 的情况下显示百分比符号,就可以在数字前面使用反斜杠(在 C++ 和 C# 中必须使用两个反斜杠),比如“#0.##\\%”。(如果正在使用 C#,就可以使用极酷的逐字字符串文字,比如@"#0.##\%"。)或者,也可以将字符串放入单引号或双引号中,以避免将其字符解释为格式命令。在 Beta 2 及更高版本中,可以通过使用双括号,从而在格式字符串中包含文字括号。 

    下面是有关图片格式的一些示例: 

    long m34 = 34000000; // 34,000,000 
    Console.WriteLine("几种图片格式"); 
    Console.WriteLine("如果没有数位,0 将打印 0;" + 
    "诸如 i: 的文字总是打印"); 
    Console.WriteLine("\t句点代表小数分隔符的位置"); 
    Console.WriteLine("i, i: 0000.0 {0, 10:i: 0000.0}", i); // 
    i:0123.0 
    Console.WriteLine("如果没有有效数字 # 将不显示," + 
    "逗号意味着放入分隔符"); 
    Console.WriteLine("请确保在数字图片中至少使用一个 0。"); 
    Console.WriteLine("p0, ##,##0.# {0, 10:##,##0.#}",-p0); // -31,415.9 
    Console.WriteLine("m34, 0,, {0, 10:0,, 百万}", m34); // 34 百万 
    Console.WriteLine("p0, #0.#E+00 {0, 10:#0.#E+00}", p0); // 31.4E+03 
    Console.WriteLine("% 乘以 100 并打印百分号"); 
    Console.WriteLine("pi, ###0.##% {0, 10:###0.##%}", pi); // 314.16% 
    Console.WriteLine("因为 \\ 而没有进行乘法运算" + 
    "(注意:两个反斜线!)"); 
    Console.WriteLine("pi, ###0.##\\\\% {0, 10:###0.##\\%}", pi); // 3.14% 
    Console.WriteLine("与 C# 的逐字字符串相同"); 
    Console.WriteLine(@"pi, ###0.##\\% {0, 10:###0.##\%}", pi); // 3.14% 
    Console.WriteLine("10, '#'#0 {0, 10:'#'#0}", 10); // #10 
    Console.WriteLine("基于符号的条件格式"); 
    Console.WriteLine("如果是 0 或正数打印 #,如果是负数打印 (#)"); 
    Console.WriteLine("-5 0;(0) {0, 10:0;(0)}", -5); // (5) 
    Console.WriteLine("如果是正数打印 #,如果是负数打印 -#,如果是 0 打印 zip"); 
    Console.WriteLine(" 0 0;-0;zip {0, 10:0;-0;zip}", 0); // zip 

    如您所见,格式功能非常强大。 

    格式的工作方式 
    文档中的示例对所传递的对象类型的变量调用 Format 方法。对这些 Format 方法仅传递格式规范的 formatstring 部分,而不传递 index 和 width。(在 Beta 2 中,对 Format 的调用将改为对 ToString 的调用。) 

    index 和 width 由 String.Format(它被 Console.Write 和 Console.WriteLine 调用)使用,以获得调用 Format 的正确对象以及将该调用的结果左或右对齐。(顺便说一下,如果要设置格式的对象不实现 IFormattable(并因此调用 Format 方法),String.Format 将调用对象的 ToString() 方法,而忽略 formatstring。) 

    换言之,Console.WriteLine 调用 String.Format,传递向它传递的所有参数。String.Format 分析字符串,查找“{”字符。找到该字符后,它将分析子字符串直到第一个“}”为止,以确定 index 数、width 和 formatstring。然后,它按照 index 访问相应的参数,并调用其 Format 方法,传递“{}”段中的 formatstring 部分。(如果参数对象不实现 IFormattable,则被调用的是 ToString。) 

    无论是实现还是不实现,都会返回一个字符串,并且 String.Format 在继续分析格式字符串之前会将其与结果字符串连接。之后,String.Format 将生成的带格式字符串返回给 Console.WriteLine,由 Console.WriteLine 进行显示。 

    对于 Beta 2 及更高版本,对象的 Format 方法(它是 IFormattable 中的 Format 方法)被 ToString 所替代,ToString 获取一个格式字符串和一个 IFormatProvider(或 null)。但 String.Format 仍存在,因此这些调用将不改变。 

    自定义格式 
    您自己也可以编写格式化程序,用于自己的类型或作为内置类型的自定义格式化程序,如“.NET 框架开发人员指南”中的自定义 Format 方法所说明的那样。如果编写内置类型的自定义格式化程序,就不能从 Console.WriteLine 中使用它,但可以通过调用 String.Format 的重载而使用它,String.Format 的重载将采用 IServiceObjectProvider(在 beta 2 及更高版本中称为 IFormatProvider)作为参数。 

    日期和时间格式 
    您将记起,有一个叫做 DateTime 的类,用于保存日期和时间。像您所猜想的那样,有大量方法可供设置 DateTime 对象的格式:仅日期、仅时间、世界时或本地时、若干种日/月/年顺序,甚至可分类。日期和时间格式是区分语言的。 

    还可以使用自定义格式字符串来设置 DateTime 对象的格式。这种字符串将包含由某些字母组成的区分大小写的子字符串,以表示日期和时间的各个不同部分,如星期几、几号、月份、年份、纪元、小时、分钟、秒或时区。这些部分中有许多具有多种格式,例如,M 是没有前导零的数字月份,MM 是有前导零的数字月份,MMM 是三个字母的月份缩写,MMMM 是所在国家语言对应的完整月份名称的拼写。在“.NET 框架参考”中可以找到自定义和标准格式字符的完整列表。 

    下面是有关日期和时间格式的一个示例: 

    Console.WriteLine("标准格式"); 
    // 后面的“分析”中会有更多信息 
    DateTime dt = DateTime.Parse("2001 年 1 月 1 日,12:01:00am"); 
    Console.WriteLine("d: {0:d}", dt); // 1/1/2001 
    Console.WriteLine("D: {0:D}", dt); // 2001 年 1 月 1 日,星期一 
    Console.WriteLine("f: {0:f}", dt); // 2001 年 1 月 1 日,星期一 12:01 AM 
    Console.Write("F: {0:F}", dt); // 2001 年 1 月 1 日,星期一 12:01:00 AM 
    Console.WriteLine(); 
    Console.WriteLine("g: {0:g}", dt); // 1/1/2001 12:01 AM 
    Console.WriteLine("G: {0:G}", dt); // 1/1/2001 12:01:00 AM 
    Console.WriteLine("M/m: {0:M}", dt); // 2001 年 1 月 
    Console.WriteLine("R/r: {0:R}", dt); // 2001 年 1 月 1 日,星期一 08:01:00 GMT 
    Console.WriteLine("s: {0:s}", dt); // 2001-01-01T00:01:00 
    Console.WriteLine("t: {0:t}", dt); // 12:01 AM 
    Console.WriteLine("T: {0:T}", dt); // 12:01:00 AM 
    Console.WriteLine("u: {0:u}", dt); // 2001-01-01 08:01:00Z 
    Console.Write("U: {0:U}", dt); // 2001 年 1 月 1 日,星期一 8:01:00 AM 
    Console.WriteLine(); 
    Console.WriteLine("Y/y: {0:Y}", dt); // 2001 年 1 月 
    Console.WriteLine("自定义格式"); 
    // 对作为格式使用的字符必须“转义”—此处为 t 和 z 
    // 同时使用引号(在文字字符串中)和反斜杠 
    Console.WriteLine(@"dddd, dd MMMM yyyy"" at ""HH:mm:ss in \zone zzz:"); 
    Console.WriteLine(@"{0:dddd, dd MMMM yyyy"" at ""HH:mm:ss in \zone zzz}", 
    dt); 
    // 2001 年 1 月 1 日,星期一 00:01:00 于时区 -08:00 

    http://www.microsoft.com/china/MSDN/library/archives/library/welcome/dsmsdn/drguinet03292001.asp 

    程序: 
    using System; 
    using System.Collections.Generic; 
    using System.Text; 
    namespace ConsoleApplication1 

    class Program 

    static void Main(string[] args) 

    double pi = Math.PI; 
    double p0 = pi * 10000; 
    int i = 123; 
    long m34 = 34000000; // 34,000,000 
    Console.WriteLine("几种图片格式"); 
    Console.WriteLine("如果没有数位,0 将打印 0;" + 
    "诸如 i: 的文字总是打印"); 
    Console.WriteLine("\t句点代表小数分隔符的位置"); 
    Console.WriteLine("i, i: 0000.0 {0, 10:i: 0000.0}", i); // i:0123.0 
    Console.WriteLine("如果没有有效数字 # 将不显示," + 
    "逗号意味着放入分隔符"); 
    Console.WriteLine("请确保在数字图片中至少使用一个 0。"); 
    Console.WriteLine("p0, ##,##0.# {0, 10:##,##0.#}", -p0); // -31,415.9 
    Console.WriteLine("m34, 0,, {0, 10:0,, 百万}", m34); // 34 百万 
    Console.WriteLine("p0, #0.#E+00 {0, 10:#0.#E+00}", p0); // 31.4E+03 
    Console.WriteLine("% 乘以 100 并打印百分号"); 
    Console.WriteLine("pi, ###0.##% {0, 10:###0.##%}", pi); // 314.16% 
    Console.WriteLine("pi, ###0.##% {0, 10:#######0.##%}", pi); // 314.16% 
    Console.WriteLine("因为 \\ 而没有进行乘法运算" + 
    "(注意:两个反斜线!)"); 
    Console.WriteLine("pi, ###0.##\\\\% {0, 10:###0.##\\%}", pi); // 3.14% 
    Console.WriteLine("与 C# 的逐字字符串相同"); 
    Console.WriteLine(@"pi, ###0.##\\% {0, 10:###0.##\%}", pi); // 3.14% 
    Console.WriteLine("10, '#'#0 {0, 10:'#'#0}", 10); // #10 
    Console.WriteLine("10, '#'#0 {0, 10:##0}", 10); // 10 
    Console.WriteLine("基于符号的条件格式"); 
    Console.WriteLine("如果是 0 或正数打印 #,如果是负数打印 (#)"); 
    Console.WriteLine("-5 0;(0) {0, 10:0;(0)}", -5); // (5) 
    Console.WriteLine("如果是正数打印 #,如果是负数打印 -#,如果是 0 打印 zip"); 
    Console.WriteLine(" 0 0;-0;zip {0, 10:0;-0;zip}", 0); // zip 
    Console.ReadLine(); 


    }
    展开全文
  • 开发过程中很多时候会用到时间戳和日期的相互转换,这里做一个小小的总结,当然也借鉴了别人的成果,这里深表感谢,大家互相学习!!
  • DateTime dt = DateTime.Now; Label1.Text = dt.ToString();//2005-11-5 13:21:25 Label2.Text = dt.ToFileTime().ToString();//127756416859912816
  • C#时间格式化

    2018-04-12 10:24:53
    C#时间格式化 日期格式:yyyyMMdd HH:mm:ss yyyy:代表年份 MM: 代表月份 dd: 代表天 HH: 代表小时(24小时制) mm: 代表分钟 ss: 代表秒
  • C#日期时间格式化

    2016-08-23 17:14:12
    为了达到不同的显示效果有时,我们需要对时间进行转化,默认格式为:2007-01-03 14:33:34 ,要转化为其他格式,要用到DateTime.ToString的方法(String, IFormatProvider),如下所示: using System; using ...
  •  C#日期格式化1、绑定时格式化日期方法:  &lt;ASP:BOUNDCOLUMN DATAFIELD= "JoinTime " DATAFORMATSTRING= "{0:yyyy-MM-dd} " &gt;  ITEMSTYLE WIDTH= "18% "...
  • C#日期格式化

    2015-09-09 17:39:22
    不得不转载呀—————日期转化DateTime d t= DateTime.Now;dt.ToString();‘2005-11-5 13:21:25dt.ToFileTime().ToString();‘127756416859912000dt.ToFileTimeUtc().ToString();127756704859912816dt.ToLocalTime...
  • C#日期格式化C#日期格式化C#日期格式化
  • 之前忘记是从哪找到的代码... /// 格式化字符串 /// /// 日期字符串 /// /// d 月中的某一天。一位数的日期没有前导零。 /// dd 月中的某一天。一位数的日期有一个前导零。 /// ddd 周中某天的缩写名称,在 Ab
  • C# DateTime日期格式化

    2018-05-27 20:42:34
    总结的很详细http://www.cnblogs.com/polk6/p/5465088.html
  • C#日期 格式化 大全

    2007-11-03 09:22:00
    格式字符 关联属性/说明d ShortDatePatternD LongDatePatternf 完整日期时间(长日期和短时间)F FullDateTimePattern(长日期和长时间)g 常规(短日期和短时间)G 常规(短日期和长时间)m、M MonthDayPatternr...
  • c# 时间格式化显示

    2018-12-11 09:44:40
    后台(.cs)格式化显示时间: 1.如果是获取到的字符串,先转换为时间类型,再格式化  Convert.ToDateTime(dt.Rows[0]["有效开始时间"].ToString()).ToString("yyyy-MM-dd"); //2018-11-11 2....
  • c#提供了非常丰富的日期时间字符串操作函数,自己结合一下资料整理了一下,方便以后查找。DateTime dt = DateTime.Now;Label1.Text = dt.ToString();//2005-11-5 13:21:25Label2.Text = dt.ToFileTime().ToString();...
  • C#格式化时间,货币

    2011-10-21 10:30:54
    1、格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元) string.Format("{0:C}",0.2) 结果为:¥0.20 (英文操作系统结果:$0.20) 默认格式化小数点后面保留两位小数,如果需要保留一...
  • 2007年11月09日 星期五 15:20 时间格式化有时候我们要对时间进行转换,达到不同的显示效果 默认格式为:2005-6-6 14:33:34 如果要换成成200506,06-2005,2005-6-6或更多的该怎么办呢 我们要用到:DateTime.ToString的
  • 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()
1 2 3 4 5 ... 20
收藏数 73,100
精华内容 29,240
关键字:

c#格式化日期