2011-12-23 68 views
3

我有一個VSTO Outlook加載項。此加載項顯示帶有DateTimePicker控件的winforms窗口,它用於選擇一天中的時間。我想設置類似於當前Windows時間格式的時間格式(如從任務欄中的時鐘)。
要做到這一點我用下面的代碼:.net如何以正確的格式顯示時間?

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中顯示時間?

--edit
當我運行以下在單獨的控制檯應用程序代碼

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:毫米TT
H:MM:SS TT
DDDD,MMMM DD,YYYY H:MM:SS TT

的Outlook是設置爲使用默認的Windows語言(英語)。

回答

0

要獲得Windows格式的時間,請在單獨的線程中顯示錶單。在Outlook線程中顯示時,需要使用Outlook文化設置。

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 
+0

謝謝,Rich,它的工作原理。有沒有可能顯示時間沒有秒? – 2011-12-23 11:14:06

+0

只是檢查..當你使用你的上述customformat,你也設置 this.dateTimePicker1.Format = System.Windows.Forms.DateTimePickerFormat.Custom; – 2011-12-23 11:45:07

+0

是的,當我使用customformat設置Format屬性爲Custom時。我已經嘗試過你的解決方案,它的工作原理,但它顯示格式HH:mm:ss的時間。可以隱藏秒嗎? – 2011-12-23 15:32:39