VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > VB.net教程 >
  • VB.NET学习笔记:数据类型——数字、日期时间格式化(字符串)

数据应该以友好的格式呈现给用户,例如,电话号码可以存储为 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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

测试结果如图: 在这里插入图片描述 不同电脑格式化的结果可能不同,结果的呈现与操作电脑的控制面板中 “区域和语言选项” 项中的设置有关。如果你想呈现特定“区域和语言选项”的字符串结果,请使用以下方法。 数字.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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 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、标准的数字格式说明符

标准数字格式字符串用于格式化通用数值类型。标准数字格式字符串采用 Axx 的形式,其中 A 是称为格式说明符的字母型字符, xx 是称为精度说明符的可选整数。 精度说明符的范围从 0 到 99,并且影响结果中的位数。 参考:标准数字格式字符串 在这里插入图片描述

2、自定义数字格式字符串

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

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 格式字符串


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zyjq52uys/article/details/86139466

相关教程