.net如何以正确的格式显示时间?

时间:2011-12-23 10:50:39

标签: .net vsto datetimepicker cultureinfo datetime-format

我有一个VSTO Outlook加载项。此加载项显示带有DateTimePicker控件的winforms窗口,它用于选择时间。我想设置类似于当前Windows时间格式的时间格式(如任务栏中的时钟)。
为此,我使用以下代码:

this.dateTimePicker1.Format = DateTimePickerFormat.Custom;
this.dateTimePicker1.CustomFormat = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern;

在Windows区域和语言设置中,我在格式和位置中使用法语,在键盘和语言中使用英语。
结果,在我的表格中,我看到的是7点而不是19点。
CurrentCulture,CurrentUICulture和InstalledUICulture返回“h:mm tt”短期格式,文化名称为en-US。
我的问题是如何确定Windows以法语格式显示时间(HH:mm)并以此格式显示DateTimePicker中的时间?

- 编辑
当我在单独的控制台应用程序中运行以下代码时

Console.WriteLine(CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern); 
Console.WriteLine(CultureInfo.CurrentCulture.DateTimeFormat.LongTimePattern); 
Console.WriteLine(CultureInfo.CurrentCulture.DateTimeFormat.FullDateTimePattern); 

它返回
HH:MM
HH:MM:SS
dddd d MMMM yyyy HH:mm:ss

在Outlook加载项中,类似的代码返回美国格式:

h:mm tt
h:mm:ss tt
dddd,MMMM dd,yyyy h:mm:ss tt

Outlook设置为使用默认的Windows语言(英语)。

2 个答案:

答案 0 :(得分:1)

不是使用自定义格式,而是使用..

this.dateTimePicker1.Format = System.Windows.Forms.DateTimePickerFormat.Time;

这应该以正确的格式显示时间(即用户选择的格式)

- 编辑

如果您执行以下操作,您会得到什么?

Console.WriteLine(CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern);
Console.WriteLine(CultureInfo.CurrentCulture.DateTimeFormat.LongTimePattern);
Console.WriteLine(CultureInfo.CurrentCulture.DateTimeFormat.FullDateTimePattern);

我的'地区和语言'区域设置为'法语(法国)',我得到了这个。

HH:mm
HH:mm:ss
dddd d MMMM yyyy HH:mm:ss

答案 1 :(得分:0)

要获得Windows格式的时间,请在单独的帖子中显示表单。在Outlook线程中显示它时,它需要Outlook文化设置。