全球化(8):日期格式设置
日期格式设置在整世界上并不是完全一致的。虽然每种日期格式都基本都显示年、月、日的内容。但其显示顺序和分割符却有很多的区别。相同国际/地区内的各区域之间也可能存在诸多差异。
基本日期格式(长日期和短日期):
长日期:2010年12月20日
短日期:2010-12-20
简单示例:
1: using System;
2: using System.Globalization;
3: using System.Diagnostics;
4: using System.Threading;
5:
6: class Program
7: {
8: static void Main(string[] args)
9: {
10: Debug.WriteLine("中文的长日期和短日期");
11: Thread.CurrentThread.CurrentCulture = new CultureInfo("zh-CN");
12: ShowDate();
13:
14: Debug.WriteLine("英语的长日期和短日期");
15: Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
16: ShowDate();
17:
18: Debug.WriteLine("法语的长日期和短日期");
19: Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");
20: ShowDate();
21:
22: Debug.WriteLine("西班牙的长日期和短日期");
23: Thread.CurrentThread.CurrentCulture = new CultureInfo("es-ES");
24: ShowDate();
25:
26: Console.Read();
27: }
28:
29: static void ShowDate()
30: {
31: Debug.WriteLine("长日期:"+DateTime.Now.ToLongDateString());
32: Debug.WriteLine("短日期:" + DateTime.Now.ToShortDateString());
33: }
34: }
显示结果:
中文的长日期和短日期 长日期:星期一 2010年12月20日 短日期:2010-12-20 英语的长日期和短日期 长日期:Monday, December 20, 2010 短日期:12/20/2010 法语的长日期和短日期 长日期:lundi 20 décembre 2010 短日期:20/12/2010 西班牙的长日期和短日期 长日期:lunes, 20 de diciembre de 2010 短日期:20/12/2010
在 .NET 环境中设置日期格式的最简单有效的方法是利用DateTime 结构,利用它提供的方法您可以对DateTime 执行区分文化的操作。使用DateTimeFormatInfo类基于特定于文化的标准来格式化和显示DateTime。
DateTimeFormatInfo 定义如何根据地域设置 DateTime 值的格式并进行显示。例如,使用 ShortDatePattern,日期 April 24, 2001 在 "en-US" 文化中被格式化为 4/24/2001,在 "en-GB" 英语(英国)文化中被格式化为 24/04/2001。DateTimeFormatInfo 实例可以针对特定文化而不是针对中立文化加以创建。中立文化没有为显示正确的日期格式提供足够的信息。正如您刚刚看到的,虽然英语(美国)和英语(英国)共享相同的中立文化(英语),但其日期格式设置却完全不同。
格式字符 |
关联属性/说明 |
---|---|
d |
|
D |
|
f |
完整日期和时间(长日期和短时间) |
F |
FullDateTimePattern(长日期和长时间) |
g |
常规(短日期和短时间) |
G |
常规(短日期和长时间) |
m、M |
|
r、R |
|
s |
使用当地时间的 SortableDateTimePattern(基于 ISO 8601) |
t |
|
T |
|
u |
UniversalSortableDateTimePattern 用于显示通用时间的格式 |
U |
使用通用时间的完整日期和时间(长日期和长时间) |
y、Y |
中文的日期格式示例:
1: using System;
2: using System.Globalization;
3: using System.Diagnostics;
4: using System.Threading;
5:
6: class Program
7: {
8: static void Main(string[] args)
9: {
10: DateTime dt = DateTime.Now;
11: Thread.CurrentThread.CurrentCulture = new CultureInfo("zh-CN");
12:
13: Console.WriteLine("Format {0}:{1}","d",dt.ToString("d"));
14: Console.WriteLine("Format {0}:{1}", "D", dt.ToString("D"));
15: Console.WriteLine("Format {0}:{1}", "f", dt.ToString("f"));
16: Console.WriteLine("Format {0}:{1}", "F", dt.ToString("F"));
17: Console.WriteLine("Format {0}:{1}", "g", dt.ToString("g"));
18: Console.WriteLine("Format {0}:{1}", "G", dt.ToString("G"));
19: Console.WriteLine("Format {0}:{1}", "m", dt.ToString("m"));
20: Console.WriteLine("Format {0}:{1}", "r", dt.ToString("r"));
21: Console.WriteLine("Format {0}:{1}", "s", dt.ToString("s"));
22: Console.WriteLine("Format {0}:{1}", "t", dt.ToString("t"));
23: Console.WriteLine("Format {0}:{1}", "T", dt.ToString("T"));
24: Console.WriteLine("Format {0}:{1}", "u", dt.ToString("u"));
25: Console.WriteLine("Format {0}:{1}", "U", dt.ToString("U"));
26: Console.WriteLine("Format {0}:{1}", "y", dt.ToString("y"));
27: Console.WriteLine("Format {0}:{1}", "Y", dt.ToString("Y"));
28: Console.Read();
29: }
30:
31: }
运行结果: