From: http://127.0.0.1:47873/help/0-3684/ms.help?method=page&id=T%3ASYSTEM.GLOBALIZATION.DATETIMEFORMATINFO&product=VS&productVersion=100&topicVersion=100&locale=ZH-CN&topicLocale=ZH-CN

定义如何根据区域性设置 DateTime 值的格式并显示这些值。

命名空间:     System.Globalization
程序集:     mscorlib (在 mscorlib.dll 中)

语法
VB
C#
C++
F#
JScript

打印
[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class DateTimeFormatInfo : ICloneable, IFormatProvider

备注

此类包含各种信息,例如日期模式、时间模式和 AM/PM 指示项。使用在 DateTimeFormatInfo 对象的属性中存储的标准或自定义模式设置 DateTime 值的格式。

在应用程序中直接使用 DateTimeFormatInfo 构造函数,可创建固定区域性的日期/时间信息。 应用程序对只读版本使用 InvariantInfo 属性,对可写版本使用 DateTimeFormatInfo 构造函数。 对于非特定区域性,不能创建 DateTimeFormatInfo 对象。

若要为特定区域性创建 DateTimeFormatInfo 对象,应用程序应为该区域性创建 CultureInfo 对象并检索 CultureInfo .DateTimeFormat 属性。 以这种方式获得的日期/时间数据仅适用于特定的区域性。

若要为当前线程的区域性创建 DateTimeFormatInfo 对象,应用程序应使用 CurrentInfo 属性。

用户可以通过“控制面板”的“区域和语言选项”部分选择重写某些与 Windows 当前区域性关联的值。例如,用户可能选择以另一种格式显示日期,或选择使用区域性默认设置以外的货币。如果将 CultureInfo .UseUserOverride 属性设置为 true,则还将从用户设置中检索 CultureInfo .DateTimeFormat 对象、 CultureInfo .NumberFormat 对象和 CultureInfo .TextInfo 对象的属性。 如果用户设置与 CultureInfo 对象的关联区域性不兼容(例如,当选定的日历不是 OptionalCalendars 指示的日历之一时),则这些方法的结果和属性值是不确定的。

在 .NET Framework 2.0 版之前的版本中,如果 CultureInfo .UseUserOverride 属性设置为 true,该对象只有在首次被访问时才会读取可被用户重写的每个属性。 由于 DateTimeFormatInfo 具有多个可被用户重写的属性,因此当出现下列情况时,这种“惰性初始化”可导致这类属性之间出现不一致:应用程序访问某个属性,同时用户更改为其他区域性或重写当前用户区域性的属性,随后应用程序访问另一个属性。 例如,按照上述顺序,可以访问LongDatePattern。 然后,用户可以在控制面板中更改模式。在访问时, ShortDatePattern 将遵循新的设置。 当用户选择其他用户区域性而不是只重写某个特定模式时,也会发生类似的不一致。

在 .NET Framework 2.0 版和更高版本中, DateTimeFormatInfo 不使用上述“惰性初始化”。而是在其创建时读取所有的用户可重写属性。 由于对象创建和用户重写过程都不是原子操作,并且相关值在对象创建过程中可能会发生更改,因此漏洞在小范围内仍然存在。但是,这种情况应该十分少见。

这种更改在序列化情况下尤为重要。.NET Framework 2.0 版和更高版本将保留所有可重写的设置,而不是仅保留执行序列化时所访问的可重写设置。

应用程序可通过设置可写 DateTimeFormatInfo 对象的关联属性来将标准模式替换为自定义模式。 若要确定 DateTimeFormatInfo 对象是否可写,应用程序应使用 IsReadOnly 属性。

下表列出了与 DateTimeFormatInfo 属性关联的标准 DateTime 格式模式。 有关更多信息,请参见 标准日期和时间格式字符串。

格式模式

关联属性/说明

d

ShortDatePattern

D

LongDatePattern

f

完整日期和时间(长日期和短时间)

F

FullDateTimePattern(长日期和长时间)

g

常规(短日期和短时间)

G

常规(短日期和长时间)

m、M

MonthDayPattern

o、O

往返日期/时间模式;在这种格式模式下,格式设置或分析操作始终使用固定区域性

r、R

RFC1123Pattern;在这种格式模式下,格式设置或分析操作始终使用固定区域性

s

使用本地时间的 SortableDateTimePattern(基于 ISO 8601);在这种格式模式下,格式设置或分析操作始终使用固定区域性

t

ShortTimePattern

T

LongTimePattern

u

使用通用时间显示格式的 UniversalSortableDateTimePattern;在这种格式模式下,格式设置或分析操作始终使用固定区域性

U

使用通用时间的完整日期和时间(长日期和长时间)

y、Y

YearMonthPattern

下表列出了自定义 DateTime 格式模式及其行为。 有关更多信息,请参见 自定义日期和时间格式字符串。

格式模式

说明

d、%d

月中的某一天。一位数的日期没有前导零。如果此格式模式没有与其他格式模式组合,应用程序将指定“%d”。

dd

月中的某一天。一位数的天有一个前导零。

ddd

周中某天的缩写名称,在 AbbreviatedDayNames 中定义。

dddd

周中某天的完整名称,在 DayNames 中定义。

f、%f

秒的小数精度为一位。其余数字被截断。如果此格式模式没有与其他格式模式组合,应用程序将指定“%f”。

ff

秒的小数精度为两位。其余数字被截断。

fff

秒的小数精度为三位。其余数字被截断。

ffff

秒的小数精度为四位。其余数字被截断。

fffff

秒的小数精度为五位。其余数字被截断。

ffffff

秒的小数精度为六位。其余数字被截断。

fffffff

秒的小数精度为七位。其余数字被截断。

F、%F

显示秒的小数部分的最高有效数字。如果该数字为零,则不显示任何内容。如果此格式模式没有与其他格式模式组合,应用程序将指定“%F”。

FF

显示秒的小数部分的两个最高有效数字。但是,不显示尾随的零(两个零数字)。

FFF

显示秒的小数部分的三个最高有效数字。但是,不显示尾随的零(三个零数字)。

FFFF

显示秒的小数部分的四个最高有效数字。但是,不显示尾随的零(四个零数字)。

FFFFF

显示秒的小数部分的五个最高有效数字。但是,不显示尾随的零(五个零数字)。

FFFFFF

显示秒的小数部分的六个最高有效数字。但是,不显示尾随的零(六个零数字)。

FFFFFFF

显示秒的小数部分的七个最高有效数字。但是,不显示尾随的零(七个零数字)。

gg

时期或纪元。如果要设置格式的日期不具有关联的时期或纪元字符串,则忽略该模式。

h、%h

12 小时制的小时。一位数的小时数没有前导零。如果此格式模式没有与其他格式模式组合,应用程序将指定“%h”。

hh

12 小时制的小时。一位数的小时有一个前导零。

H、%H

24 小时制的小时。一位数的小时数没有前导零。如果此格式模式没有与其他格式模式组合,应用程序将指定“%H”。

HH

24 小时制的小时。一位数的小时有一个前导零。

K

Kind 属性的不同值,即本地、Utc 或未指定。

m、%m

分钟。一位数的分钟数没有前导零。如果此格式模式没有与其他格式模式组合,应用程序将指定“%m”。

mm

分钟。一位数的分钟有一个前导零。

M、%M

月份数字。一位数的月份没有前导零。如果此格式模式没有与其他格式模式组合,应用程序将指定“%M”。

MM

月份数字。一位数的月份有一个前导零。

MMM

月份的缩写名称,在 AbbreviatedMonthNames 中定义。

MMMM

月份的完整名称,在 MonthNames 中定义。

s、%s

秒。一位数的秒数没有前导零。如果此格式模式没有与其他格式模式组合,应用程序将指定“%s”。

ss

秒。一位数的秒有一个前导零。

t、%t

在 AMDesignator 或 PMDesignator 中定义的 AM/PM 指示项的第一个字符(如果存在)。 如果此格式模式没有与其他格式模式组合,应用程序将指定“%t”。

tt

在 AMDesignator 或 PMDesignator 中定义的 AM/PM 指示项(如果存在)。 对于需要维护 AM 与 PM 之间的差异的语言,应用程序应使用此格式模式。以日语为例,其 AM 和 PM 指示符的差异点为第二个字符,而非第一个字符。

y、%y

不包含纪元的年份。如果不包含纪元的年份小于 10,则显示不具有前导零的年份。如果此格式模式没有与其他格式模式组合,应用程序将指定“%y”。

yy

不包含纪元的年份。如果不包含纪元的年份小于 10,则显示具有前导零的年份。

yyy

三位数的年份。如果年份小于 100,则会以带前导零的方式显示。

yyyy

包括纪元的四位或五位数的年份(取决于所使用的日历)。对于不够四位数的年份,将使用前导零填充。泰国佛历和朝鲜历采用五位数的年份。对于具有五位数的日历,选择“yyyy”模式的用户将看到不带前导零的所有这五位数。例外情况:对于日本历和台湾日历,其行为始终都像是用户选择了“yy”。

yyyyy

五位数的年份。对于不够五位数的年份,将使用前导零填充。例外情况:对于日本历和台湾日历,其行为始终都像是用户选择了“yy”。

yyyyyy

六位数的年份。对于不够六位数的年份,将使用前导零填充。例外情况:对于日本历和台湾日历,其行为始终都像是用户选择了“yy”。此模式可不断续加“y”,从而形成一个更长的字符串,这时将需要使用更多的前导零。

z、%z

时区偏移量(“+”或“-”后面仅跟小时)。一位数的小时数没有前导零。例如,太平洋标准时间是“-8”。如果此格式模式没有与其他格式模式组合,应用程序将指定“%z”。

zz

时区偏移量(“+”或“-”后面仅跟小时)。一位数的小时有一个前导零。例如,太平洋标准时间是“-08”。

zzz

完整时区偏移量(“+”或“-”后面跟有小时和分钟)。一位数的小时数和分钟数有前导零。例如,太平洋标准时间是“-08:00”。

:

在 TimeSeparator 中定义的默认时间分隔符。

/

在 DateSeparator 中定义的默认日期分隔符。

% c

其中 c 是格式模式(如果单独使用)。 若要使用格式模式“d”、“f”、“F”、“h”、“m”、“s”、“t”、“y”、“z”、“H”、或“M”本身,应用程序应指定“%d”、“%f”、“%F”、“%h”、“%m”、“%s”、“%t”、“%y”、“%z”、“%H”或“%M”。

如果格式模式与原义字符或其他格式模式合并,则可以省略“%”字符。

\ c

其中 c 是任意字符。 照原义显示字符。若要显示反斜杠字符,应用程序应使用“\\”。

只有上面第二个表中列出的格式模式可用于创建自定义模式。第一个表中列出的标准格式模式只用于创建标准模式。自定义模式的长度至少为两个字符,例如:

  • DateTime.ToString("d") 返回 DateTime 值;“d”是标准短日期模式。

  • DateTime.ToString("%d") 返回月中的某天;“%d”是自定义模式。

  • DateTime.ToString("d ") 返回月中的某天,并在其后面跟有一个空白字符;“d ”是自定义模式。

应用程序只能为固定区域性或特定区域性创建 DateTimeFormatInfo 对象或 NumberFormatInfo 对象,但不能为非特定区域性创建这些对象。 有关固定区域性、特定区域性和非特定区域性的更多信息,请参见 CultureInfo 类。

该类实现 ICloneable 接口以启用 DateTimeFormatInfo 对象的复制。 它还实现 IFormatProvider 以便为应用程序提供格式化信息。

示例

下面的代码示例将输出 en-US 区域性的不同格式模式。它还会显示与这些格式模式关联的属性值。

VB
C#
C++
F#
JScript

打印
using System;
using System.Globalization;public class SamplesDTFI  {public static void Main()  {// Creates and initializes a DateTimeFormatInfo associated with the en-US culture.DateTimeFormatInfo myDTFI = new CultureInfo( "en-US", false ).DateTimeFormat;// Creates a DateTime with the Gregorian date January 3, 2002 (year=2002, month=1, day=3).// The Gregorian calendar is the default calendar for the en-US culture.DateTime myDT = new DateTime( 2002, 1, 3 );// Displays the format pattern associated with each format character.Console.WriteLine( "FORMAT  en-US EXAMPLE" );Console.WriteLine( "CHAR    VALUE OF ASSOCIATED PROPERTY, IF ANY\n" );Console.WriteLine( "  d     {0}", myDT.ToString("d", myDTFI) );Console.WriteLine( "        {0} {1}\n", myDTFI.ShortDatePattern, "(ShortDatePattern)" );Console.WriteLine( "  D     {0}", myDT.ToString("D", myDTFI) );Console.WriteLine( "        {0} {1}\n", myDTFI.LongDatePattern, "(LongDatePattern)" );Console.WriteLine( "  f     {0}\n", myDT.ToString("f", myDTFI) );Console.WriteLine( "  F     {0}", myDT.ToString("F", myDTFI) );Console.WriteLine( "        {0} {1}\n", myDTFI.FullDateTimePattern, "(FullDateTimePattern)" );Console.WriteLine( "  g     {0}\n", myDT.ToString("g", myDTFI) );Console.WriteLine( "  G     {0}\n", myDT.ToString("G", myDTFI) );Console.WriteLine( "  m     {0}", myDT.ToString("m", myDTFI) );Console.WriteLine( "        {0} {1}\n", myDTFI.MonthDayPattern, "(MonthDayPattern)" );Console.WriteLine( "  M     {0}", myDT.ToString("M", myDTFI) );Console.WriteLine( "        {0} {1}\n", myDTFI.MonthDayPattern, "(MonthDayPattern)" );Console.WriteLine( "  o     {0}\n", myDT.ToString("o", myDTFI) );Console.WriteLine( "  r     {0}", myDT.ToString("r", myDTFI) );Console.WriteLine( "        {0} {1}\n", myDTFI.RFC1123Pattern, "(RFC1123Pattern)" );Console.WriteLine( "  R     {0}", myDT.ToString("R", myDTFI) );Console.WriteLine( "        {0} {1}\n", myDTFI.RFC1123Pattern, "(RFC1123Pattern)" );Console.WriteLine( "  s     {0}", myDT.ToString("s", myDTFI) );Console.WriteLine( "        {0} {1}\n", myDTFI.SortableDateTimePattern, "(SortableDateTimePattern)" );Console.WriteLine( "  t     {0}", myDT.ToString("t", myDTFI) );Console.WriteLine( "        {0} {1}\n", myDTFI.ShortTimePattern, "(ShortTimePattern)" );Console.WriteLine( "  T     {0}", myDT.ToString("T", myDTFI) );Console.WriteLine( "        {0} {1}\n", myDTFI.LongTimePattern, "(LongTimePattern)" );Console.WriteLine( "  u     {0}", myDT.ToString("u", myDTFI) );Console.WriteLine( "        {0} {1}\n", myDTFI.UniversalSortableDateTimePattern, "(UniversalSortableDateTimePattern)" );Console.WriteLine( "  U     {0}\n", myDT.ToString("U", myDTFI) );Console.WriteLine( "  y     {0}", myDT.ToString("y", myDTFI) );Console.WriteLine( "        {0} {1}\n", myDTFI.YearMonthPattern, "(YearMonthPattern)" );Console.WriteLine( "  Y     {0}", myDT.ToString("Y", myDTFI) );Console.WriteLine( "        {0} {1}\n", myDTFI.YearMonthPattern, "(YearMonthPattern)" );}}/*
This code produces the following output.FORMAT  en-US EXAMPLE
CHAR    VALUE OF ASSOCIATED PROPERTY, IF ANYd     1/3/2002M/d/yyyy (ShortDatePattern)D     Thursday, January 03, 2002dddd, MMMM dd, yyyy (LongDatePattern)f     Thursday, January 03, 2002 12:00 AMF     Thursday, January 03, 2002 12:00:00 AMdddd, MMMM dd, yyyy h:mm:ss tt (FullDateTimePattern)g     1/3/2002 12:00 AMG     1/3/2002 12:00:00 AMm     January 03MMMM dd (MonthDayPattern)M     January 03MMMM dd (MonthDayPattern)o     2002-01-03T00:00:00.0000000r     Thu, 03 Jan 2002 00:00:00 GMTddd, dd MMM yyyy HH':'mm':'ss 'GMT' (RFC1123Pattern)R     Thu, 03 Jan 2002 00:00:00 GMTddd, dd MMM yyyy HH':'mm':'ss 'GMT' (RFC1123Pattern)s     2002-01-03T00:00:00yyyy'-'MM'-'dd'T'HH':'mm':'ss (SortableDateTimePattern)t     12:00 AMh:mm tt (ShortTimePattern)T     12:00:00 AMh:mm:ss tt (LongTimePattern)u     2002-01-03 00:00:00Zyyyy'-'MM'-'dd HH':'mm':'ss'Z' (UniversalSortableDateTimePattern)U     Thursday, January 03, 2002 8:00:00 AMy     January, 2002MMMM, yyyy (YearMonthPattern)Y     January, 2002MMMM, yyyy (YearMonthPattern)*/

继承层次结构

System .Object 
    System.Globalization .DateTimeFormatInfo

线程安全

此类型的任何公共  static (在 Visual Basic 中为  Shared ) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

平台

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见 .NET Framework 系统要求。

版本信息

.NET Framework

受以下版本支持:4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持:4

XNA Framework

受以下版本支持:3.0、2.0、1.0

请参见

参考

DateTimeFormatInfo 成员
System.Globalization 命名空间
DateTime
Calendar
CultureInfo

其他资源

格式化类型
标准日期和时间格式字符串
自定义日期和时间格式字符串

DateTimeFormatInfo 类相关推荐

  1. cultureinfo 类 java_System.Globalization.CultureInfo.cs(示例代码)

    #region 程序集 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 //C:Program ...

  2. C#.NET 中的类型转换

    前些天,碰到了数据类型转换与格式化问题,在网上查找了一下,有人已经把它写了出来,粘贴如下,共大家分享: C#.NET 中的类型转换 C# 出来也有些日子了,最近由于编程的需要,对 C# 的类型转换做了 ...

  3. C#.NET 中的类型转换 (转)

    C# 出来也有些日子了,最近由于编程的需要,对 C# 的类型转换做了一些研究,其内容涉及 C# 的装箱/拆箱/别名.数值类型间相互转换.字符的 ASCII 码和 Unicode 码.数值字符串和数值之 ...

  4. C# .Net中的类型转换

    1. 装箱.拆箱还是别名 许多 C#.NET 的书上都有介绍 int -> Int32 是一个装箱的过程,反之则是拆箱的过程.许多其它变量类型也是如此,如:short <-> Int ...

  5. c# string总结

    1.string 是引用类型,其具有不可变性 我们一般认为的将内存分为五个区域.其中程序员常用的有三个,即栈.堆,静态存储区域. 其中值类型的值存储在栈中,如int类型,而引用类型的值存储在堆中. s ...

  6. C# .NET学习经验总结

    1. 装箱.拆箱还是别名 许多介绍C# .NET学习经验的书上都有介绍 int -> Int32 是一个装箱的过程,反之则是拆箱的过程.许多其它变量类型也是如此,如:short <-> ...

  7. C#.NET高级面试题

    转自http://chaoyouzhuo.blog.163.com/blog/static/1263760012011109114131316/ 1. DateTime.Parse(myString) ...

  8. C# 自定义类型通过实现IFormattable接口,来输出指定的格式和语言文化的字符串(例:DateTime)...

    常规的调用ToString()方法,存在两个问题. (1).调用者无法控制字符串的格式 (2).调用者不能方便的选择一种特定的语言文化来格式化字符串. 在开发一些国际化的应用时,应用程序需要调用与当前 ...

  9. NET新手遭遇问题(九)

      没怎么整理,乱得很,姑且如此吧...-_- 1.遇到的问题: Mysql 中编写 SQL 语句以及 MYSQL-FRONT 等 解决方法: 学过 SQL SERVER , MYSQL 的语法有些不 ...

最新文章

  1. yii cgridview 默认的筛选如何做成选择框
  2. 功能强大的打包工具 NSIS,全部用脚本搞定 使用经验总结帖(持续更新中。。。)...
  3. 基于词典的逆向最大匹配中文分词算法,更好实现中英文数字混合分词
  4. unity调用python脚本_Unity3d中C#脚本调用另一个C#脚本的方法
  5. buck电路上下管_推荐 | 学好电路设计与仿真?你不能错过这两本书籍 ~
  6. linux中mysql群集_阅读无群集可用性组中的Scale可用性组
  7. FireEye 红队失窃工具大揭秘之:分析复现 Zoho 任意文件上传漏洞(CVE-2020-8394)
  8. [转载] Java7中增加的新特性
  9. Eclipse启动报错:A java runtime Environment(JRE) or java Development……的解决办法
  10. 5. Zend_Log
  11. indesign缩放图片被切割_InDesign怎么改变图片的大小
  12. 备考2个月如何一次性通过信息系统项目管理师
  13. Hibernate validator 官网前言中文版
  14. centos7搭建aria2+yaaw
  15. 【Android】使用MPAndroidChart过程中BarChart的几点心得
  16. 五菱宏光MINI EV,重走“小米”路
  17. 从业17年,聊聊关于测试这件事
  18. 第22批符合道路运输车辆卫星定位系统标准 及规范的车载终端
  19. ImageMagick将多张图片拼接成一张图片_不会PS也没关系!我想向你推荐这18款免费好用的在线图片处理工具...
  20. proftpd的SSH_DISCONNECT (Read TImed out,Key exchange failed.错误解决

热门文章

  1. 如何在eclipse中装myeclipse的插件
  2. coverage.py - python 单元测试覆盖率统计工具
  3. 【评论】GNU/Linux下有多少是GNU的?
  4. 怎么看服务器上jdk安装位置,查看云服务器jdk安装路径
  5. linux分辨率和用户有关吗,Linux系统在高分屏非正常分辨率显示
  6. 高斯噪声,椒盐噪声的思想及多种噪声的实现
  7. leetcode 19. 删除链表的倒数第N个节点(双指针)
  8. Docker初学者指南-如何创建您的第一个Docker应用程序
  9. react实战课程_在使用React一年后,我学到的最重要的课程
  10. JavaScript Essentials:如何为循环而烦恼