关键词搜索

源码搜索 ×
×

VB.NET学习笔记:数据类型——数字、日期时间格式化(字符串)

发布2021-02-08浏览1174次

详情内容

数据应该以友好的格式呈现给用户,例如,电话号码可以存储为 8009999999 格式,但我们更喜欢这样来显示给用户: 800-999-9999。 这就需要我们对存储的数据进行格式化后再呈现出来。
格式设置是将类型(如数字、日期等)的值转换为字符串表示形式的过程,通常使得最终的字符串以友好的格式显示给用户,也可以理解为把其他数据类型以想要的格式转换成字符串。通常使用 Object.ToString方法、 String.Format 方法或StringBuilder.AppendFormat方法对数据进行格式设置。
官方帮助网页:设置 .NET 中类型的格式

一、Object.ToString方法
1、数字格式字符串
数字.ToString(format)
参数:format——String,标准或自定义的数值格式字符串。
返回:String,此实例的值的字符串表示形式,由 format 指定。
如(帮助页的示例代码):

Dim floating As Double = 10761.937554
Console.WriteLine("C: {0}",
      floating.ToString("C"))
Console.WriteLine("E: {0}",
      floating.ToString("E03"))
Console.WriteLine("F: {0}",
      floating.ToString("F04"))
Console.WriteLine("G: {0}",
      floating.ToString("G"))
Console.WriteLine("N: {0}",
      floating.ToString("N03"))
Console.WriteLine("P: {0}",
      (floating / 10000).ToString("P02"))
Console.WriteLine("R: {0}",
      floating.ToString("R"))
Console.WriteLine()

Dim integral As Integer = 8395
Console.WriteLine("C: {0}",
      integral.ToString("C"))
Console.WriteLine("D: {0}",
      integral.ToString("D6"))
Console.WriteLine("E: {0}",
      integral.ToString("E03"))
Console.WriteLine("F: {0}",
      integral.ToString("F01"))
Console.WriteLine("G: {0}",
      integral.ToString("G"))
Console.WriteLine("N: {0}",
      integral.ToString("N01"))
Console.WriteLine("P: {0}",
      (integral / 10000).ToString("P02"))
Console.WriteLine("X: 0x{0}",
      integral.ToString("X"))
Console.WriteLine()

    测试结果如图:

    在这里插入图片描述

    不同电脑格式化的结果可能不同,结果的呈现与操作电脑的控制面板中 “区域和语言选项” 项中的设置有关。如果你想呈现特定“区域和语言选项”的字符串结果,请使用以下方法。
    数字.ToString(format,provider)
    参数:format——String,标准或自定义的数值格式字符串;provider——IFormatProvider,一个提供区域性特定的格式设置信息的对象。
    返回:String,此实例的值的字符串表示形式,由 format 和 provider 指定。
    如以下代码使用 en-US 区域性设置数值的格式:

    ' Display string representations of numbers for en-us culture
    Dim ci As New System.Globalization.CultureInfo("en-us")
    
    ' Output floating point values
    Dim floating As Double = 10761.937554
    Console.WriteLine("C: {0}",
          floating.ToString("C", ci))           ' Displays "C: $10,761.94"
    Console.WriteLine("E: {0}",
          floating.ToString("E03", ci))         ' Displays "E: 1.076E+004"
    Console.WriteLine("F: {0}",
          floating.ToString("F04", ci))         ' Displays "F: 10761.9376"         
    Console.WriteLine("G: {0}",
          floating.ToString("G", ci))           ' Displays "G: 10761.937554"
    Console.WriteLine("N: {0}",
          floating.ToString("N03", ci))         ' Displays "N: 10,761.938"
    Console.WriteLine("P: {0}",
          (floating / 10000).ToString("P02", ci)) ' Displays "P: 107.62 %"
    Console.WriteLine("R: {0}",
          floating.ToString("R", ci))           ' Displays "R: 10761.937554"            
    Console.WriteLine()
    
    ' Output integral values
    Dim integral As Integer = 8395
    Console.WriteLine("C: {0}",
          integral.ToString("C", ci))           ' Displays "C: $8,395.00"
    Console.WriteLine("D: {0}",
          integral.ToString("D6"))              ' Displays "D: 008395" 
    Console.WriteLine("E: {0}",
          integral.ToString("E03", ci))         ' Displays "E: 8.395E+003"
    Console.WriteLine("F: {0}",
          integral.ToString("F01", ci))         ' Displays "F: 8395.0"    
    Console.WriteLine("G: {0}",
          integral.ToString("G", ci))           ' Displays "G: 8395"
    Console.WriteLine("N: {0}",
          integral.ToString("N01", ci))         ' Displays "N: 8,395.0"
    Console.WriteLine("P: {0}",
          (integral / 10000).ToString("P02", ci)) ' Displays "P: 83.95 %"
    Console.WriteLine("X: 0x{0}",
          integral.ToString("X", ci))           ' Displays "X: 0x20CB"
    Console.WriteLine()
    
      36
    • 37
    • 38
    • 39
    • 40

    测试结果如图:

    在这里插入图片描述

    示例代码使用两个特定的数值类型(Double 和 Int32),但对于任何一个其他数值基类型(Byte、SByte、Int16、Int32、Int64、UInt16、UInt32、UInt64、BigInteger、Decimal 和 Single)都将产生类似的结果。

    2、日期和时间格式字符串
    与数字格式字符串类似,直接上测试代码:

    Dim date1 As Date = #4/10/2008#
    Console.WriteLine(date1.ToString("d"))
    
    • 1
    • 2

    结果的呈现与操作电脑的控制面板中 “区域和语言选项” 项中的设置有关。以特定语言呈现的代码如下:

    Dim date1 As Date = #4/10/2008#
    Console.WriteLine(date1.ToString("d", Globalization.DateTimeFormatInfo.InvariantInfo))
    ' Displays 04/10/2008
    Console.WriteLine(date1.ToString("d",
                      Globalization.CultureInfo.CreateSpecificCulture("en-US")))
    ' Displays 4/10/2008                       
    Console.WriteLine(date1.ToString("d",
                      Globalization.CultureInfo.CreateSpecificCulture("en-NZ")))
    ' Displays 10/04/2008                       
    Console.WriteLine(date1.ToString("d",
                      Globalization.CultureInfo.CreateSpecificCulture("de-DE")))
    ' Displays 10.04.2008
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    二、String.Format方法
    String.Format(format,arg0)
    参数:format——String,任何格式设置;arg0——Object,要设置格式的对象。
    返回:String,format 的副本,其中的任何格式项均替换为 arg0 的字符串表示形式。
    如:

    '数字格式字符串
    Console.WriteLine(String.Format("{0:D10}", 79203159)) '输出结果  0079203159
    
    '日期时间格式字符串
    Dim date1 As Date = #4/10/2008#
    Console.WriteLine(String.Format("{0:d}", date1)) '输出结果 2008/4/10
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    如果要呈现特定“区域和语言选项”的字符串结果,请使用以下方法。

    '指定区域语言为"en-us"
    Dim ci As New System.Globalization.CultureInfo("en-us")
    
    '数字格式字符串
    Console.WriteLine(String.Format(ci, "{0:c}", 79203159)) '输出结果  $79,203,159.00
    
    '日期时间格式字符串
    Dim date1 As Date = #4/10/2008#
    Console.WriteLine(String.Format(ci, "{0:d}", date1)) '输出结果 4/10/2008
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    这里说明一下format参数的书写格式:"{0:格式说明符}",如"{0:d}"。
    如果仅单纯的进行格式化笔者喜欢Object.ToString方法,简洁易懂,String.Format方法单纯的格式化文本不是他的目的,他重要用途是向一个字符串插入一个格式化了的字符串,如:

       '输出——今天是: 2019年1月9日,这是个特别的日子!
        Console.WriteLine(String.Format("今天是: {0:D},这是个特别的日子!", DateTime.Now))
    
    • 1
    • 2

    1
    2
    测试结果如图:
    在这里插入图片描述

    三、附录
    1、标准的数字格式说明符
    标准数字格式字符串用于格式化通用数值类型。标准数字格式字符串采用 Axx 的形式,其中 A 是称为格式说明符的字母型字符, xx 是称为精度说明符的可选整数。 精度说明符的范围从 0 到 99,并且影响结果中的位数。
    参考:标准数字格式字符串

    在这里插入图片描述

    2、自定义数字格式字符串
    任何包含一个以上字母字符(包括空白)的数字格式vb.net教程字符串都被解释为自定义数字格式字符串。
    参考:自定义数字格式字符串
    在这里插入图片描述

    3、标准日期和时间格式字符串
    参考:标准日期和时间格式字符串
    格式说明符——说明
    “d”——短日期模式。
    “D”——长日期模式。
    “f”——完整日期/时间模式(短时间)。
    “F”——完整日期/时间模式(长时间)。
    “g”——常规日期/时间模式(短时间)。
    “G”——常规日期/时间模式(长时间)。
    “M”、“m”——月/日模式。
    “O”、“o”——往返日期/时间模式。
    “R”、“r”——RFC1123 模式。
    “s”——可排序日期/时间模式。
    “t”——短时间模式。
    “T”——长时间模式。
    “u”——通用可排序日期/时间模式。
    “U”——通用完整日期/时间模式。
    “Y”、“y”——年月模式。
    任何其他单个字符——未知说明符。引发运行时 FormatException。

    4、自定义日期和时间格式字符串
    参考:自定义日期和时间格式字符串

    5、标准 TimeSpan 格式字符串
    参考:标准 TimeSpan 格式字符串

    6、自定义的 TimeSpan 格式字符串

    相关技术文章

    点击QQ咨询
    开通会员
    返回顶部
    ×
    微信扫码支付
    微信扫码支付
    确定支付下载
    请使用微信描二维码支付
    ×

    提示信息

    ×

    选择支付方式

    • 微信支付
    • 支付宝付款
    确定支付下载