• string.Format 字符串 格式化时间,货币


    1、格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元)

    string.Format("{0:C}",0.2) 结果为:¥0.20 (英文操作系统结果:$0.20)

    默认格式化小数点后面保留两位小数,如果需要保留一位或者更多,可以指定位数 string.Format("{0:C1}",23.15) 结果为:¥23.2 (截取会自动四舍五入)

    格式化多个Object实例 string.Format("市场价:{0:C},优惠价{1:C}",23.15,19.82)

    2、格式化十进制的数字(格式化成固定的位数,位数不能少于未格式化前,只支持整形)

    string.Format("{0:D3}",23) 结果为:023

    string.Format("{0:D2}",1223) 结果为:1223,(精度说明符指示结果字符串中所需的最少数字个数。)

    3、用分号隔开的数字,并指定小数点后的位数

    string.Format("{0:N}", 14200) 结果为:14,200.00 (默认为小数点后面两位)

    string.Format("{0:N3}", 14200.2458) 结果为:14,200.246 (自动四舍五入)

    4、格式化百分比

    string.Format("{0:P}", 0.24583) 结果为:24.58% (默认保留百分的两位小数)

    string.Format("{0:P1}", 0.24583) 结果为:24.6% (自动四舍五入)

    5、零占位符和数字占位符

    string.Format("{0:0000.00}", 12394.039) 结果为:12394.04

    string.Format("{0:0000.00}", 194.039) 结果为:0194.04

    string.Format("{0:###.##}", 12394.039) 结果为:12394.04

    string.Format("{0:####.#}", 194.039) 结果为:194

    下面的这段说明比较难理解,多测试一下实际的应用就可以明白了。 零占位符: 如果格式化的值在格式字符串中出现“0”的位置有一个数字,则此数字被复制到结果字符串中。小数点前最左边的“0”的位置和小数点后最右边的“0”的位置确定总在结果字符串中出现的数字范围。 “00”说明符使得值被舍入到小数点前最近的数字,其中零位总被舍去。

    数字占位符: 如果格式化的值在格式字符串中出现“#”的位置有一个数字,则此数字被复制到结果字符串中。否则,结果字符串中的此位置不存储任何值。 请注意,如果“0”不是有效数字,此说明符永不显示“0”字符,即使“0”是字符串中唯一的数字。如果“0”是所显示的数字中的有效数字,则显示“0”字符。 “##”格式字符串使得值被舍入到小数点前最近的数字,其中零总被舍去。

    6、日期格式化

      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_r("sj"))%>

    标准数字格式字符串

    格式说明符 名称 说明 C 或 c 货币 数字转换为表示货币金额的字符串。转换由当前 NumberFormatInfo 对象的货币格式信息控制。

    精度说明符指示所需的小数位数。如果省略精度说明符,则使用当前 NumberFormatInfo 对象给定的默认货币精度。
    D 或 d 十进制数 只有整型才支持此格式。数字转换为十进制数字 (0-9) 的字符串,如果数字为负,则前面加负号。

    精度说明符指示结果字符串中所需的最少数字个数。如果需要的话,则用零填充该数字的左侧,以产生精度说明符给定的数字个数。
    E 或 e 科学记数法(指数) 数字转换为“-d.ddd…E+ddd”或“-d.ddd…e+ddd”形式的字符串,其中每个“d”表示一个数字 (0-9)。如果该数字为负,则该字符串以减号开头。小数点前总有一个数字。

    精度说明符指示小数点后所需的位数。如果省略精度说明符,则使用默认值,即小数点后六位数字。

    格式说明符的大小写指示在指数前加前缀“E”还是“e”。指数总是由正号或负号以及最少三位数字组成。如果需要,用零填充指数以满足最少三位数字的要求。
    F 或 f 定点 数字转换为“-ddd.ddd…”形式的字符串,其中每个“d”表示一个数字 (0-9)。如果该数字为负,则该字符串以减号开头。

    精度说明符指示所需的小数位数。如果忽略精度说明符,则使用当前 NumberFormatInfo 对象给定的默认数值精度。
    G 或 g 常规 根据数字类型以及是否存在精度说明符,数字会转换为定点或科学记数法的最紧凑形式。如果精度说明符被省略或为零,则数字的类型决定默认精度,如下表所示。

    Byte 或 SByte:3

    Int16 或 UInt16:5

    Int32 或 UInt32:10

    Int64 或 UInt64:19

    Single:7

    Double:15

    Decimal:29

    如果用科学记数法表示数字时指数大于 -5 而且小于精度说明符,则使用定点表示法;否则使用科学记数法。如果要求有小数点,并且忽略尾部零,则结果包含小数点。如果精度说明符存在,并且结果的有效数字位数超过指定精度,则通过舍入删除多余的尾部数字。

    上述规则有一个例外:如果数字是 Decimal 而且省略精度说明符时。在这种情况下总使用定点表示法并保留尾部零。

    使用科学记数法时,如果格式说明符是“G”,结果的指数带前缀“E”;如果格式说明符是“g”,结果的指数带前缀“e”。
    N 或 n 数字 数字转换为“-d,ddd,ddd.ddd…”形式的字符串,其中“-”表示负数符号(如果需要),“d”表示数字 (0-9),“,”表示数字组之间的千位分隔符,“.”表示小数点符号。实际的负数模式、数字组大小、千位分隔符以及十进制分隔符由当前 NumberFormatInfo 对象指定。

    精度说明符指示所需的小数位数。如果忽略精度说明符,则使用当前 NumberFormatInfo 对象给定的默认数值精度。
    P 或 p 百分比 数字转换为由 NumberFormatInfo.PercentNegativePattern 或 NumberFormatInfo.PercentPositivePattern 属性定义的、表示百分比的字符串,前者用于数字为负的情况,后者用于数字为正的情况。已转换的数字乘以 100 以表示为百分比。

    精度说明符指示所需的小数位数。如果忽略精度说明符,则使用当前 NumberFormatInfo 对象给定的默认数值精度。
    R 或 r 往返过程 只有 Single 和 Double 类型支持此格式。往返过程说明符保证转换为字符串的数值再次被分析为相同的数值。使用此说明符格式化数值时,首先使用常规格式对其进行测试:Double 使用 15 位精度,Single 使用 7 位精度。如果此值被成功地分析回相同的数值,则使用常规格式说明符对其进行格式化。但是,如果此值未被成功地分析为相同数值,则它这样格式化:Double 使用 17 位精度,Single 使用 9 位精度。

    虽然此处可以存在精度说明符,但它将被忽略。使用此说明符时,往返过程优先于精度。
    X 或 x 十六进制数 只有整型才支持此格式。数字转换为十六进制数字的字符串。格式说明符的大小写指示对大于 9 的十六进制数字使用大写字符还是小写字符。例如,使用“X”产生“ABCDEF”,使用“x”产生“abcdef”。

  • 相关阅读:
    代码重构(转)
    Apache负载均衡 配置
    恒久的忍耐
    setInterval全面的介绍
    引用 110个Oracle 常用函数的总结
    ssl和tls
    JSTL
    java异常处理的陋习(转载)
    Java 6 JVM参数选项大全(中文版)
    liunx基础常用命令
  • 原文地址:https://www.cnblogs.com/liang-ling/p/3359296.html
Copyright © 2020-2023  润新知