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

标签 .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:00,而不是19:00。
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: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语言(英语)。

最佳答案

您不能使用自定义格式,而不能使用..

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

关于.net - .net如何以正确的格式显示时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8615132/

相关文章:

python - JSON 标准 - 和多态性

c# - 如何从另一个 in-behind xaml 代码访问变量 in-behind xaml 代码

c# - 类型 c# 上的开关大小写

excel - 如何以及何时关闭在 Office VSTO 插件中的另一个线程上运行的 WPF 窗口

.net - Excel 从两个不同的 AppDomain 调用 .NET 自动化服务器?

c# - Pivot Double Click - Show Detail 事件

javascript - Bootstrap DateTimePicker (Eonasdan) 未显示

c# - 如何使用 {} 而不是 ; 自行设置属性?

wpf - 如何在 WPF 中使用 DateTimePicker?

user-interface - GWT 日期时间组件