zoukankan      html  css  js  c++  java
  • string.Format 格式化时间,货币

    绑定数据时,格式化时间 

    <%#Eval("sTime", "{0:yyyy-MM-dd}")%>

    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、日期格式化

    string.Format("{0:d}",System.DateTime.Now) 结果为:2009-3-20 (月份位置不是03)

    string.Format("{0:D}",System.DateTime.Now) 结果为:2009年3月20日

    string.Format("{0:f}",System.DateTime.Now) 结果为:2009年3月20日 15:37

    string.Format("{0:F}",System.DateTime.Now) 结果为:2009年3月20日 15:37:52

    string.Format("{0:g}",System.DateTime.Now) 结果为:2009-3-20 15:38

    string.Format("{0:G}",System.DateTime.Now) 结果为:2009-3-20 15:39:27

    string.Format("{0:m}",System.DateTime.Now) 结果为:3月20日

    string.Format("{0:t}",System.DateTime.Now) 结果为:15:41

    string.Format("{0:T}",System.DateTime.Now) 结果为:15:41:50


    更详细的说明请下面微软对此的说明或者上msdn上查询。

    微软MSDN对string.format的方法说明:

    名称 说明 
    String.Format (String, Object) 将指定的 String 中的格式项替换为指定的 Object 实例的值的文本等效项。 
    String.Format (String, Object[]) 将指定 String 中的格式项替换为指定数组中相应 Object 实例的值的文本等效项。 
    String.Format (IFormatProvider, String, Object[]) 将指定 String 中的格式项替换为指定数组中相应 Object 实例的值的文本等效项。指定的参数提供区域性特定的格式设置信息。 
    String.Format (String, Object, Object) 将指定的 String 中的格式项替换为两个指定的 Object 实例的值的文本等效项。 
    String.Format (String, Object, Object, Object) 将指定的 String 中的格式项替换为三个指定的 Object 实例的值的文本等效项。

    标准数字格式字符串

    格式说明符 名称 说明 
    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”。

  • 相关阅读:
    7月的尾巴,你是XXX
    戏说Android view 工作流程《下》
    “燕子”
    Android开机动画bootanimation.zip
    戏说Android view 工作流程《上》
    ViewController里已连接的IBOutlet为什么会是nil
    My first App "Encrypt Wheel" is Ready to Download!
    iOS开发中角色Role所产生的悲剧(未完)
    UIScrollView实现不全屏分页的小技巧
    Apple misunderstood my app,now my app status changed to “In Review”
  • 原文地址:https://www.cnblogs.com/zhangji/p/2442275.html
Copyright © 2011-2022 走看看