2017-04-24 77 views
0

我編寫了一個工作程序,以保持我們的項目跟蹤訪問數據庫。代碼是用VB.NET編寫的使程序使用不同的語言/日期格式vb

事情是我用法語的日期使用計算機。整個事情是根據這種語言編碼的。但現在我必須在該公司的所有電腦上安裝該程序(有些是法文的,有些是英文的)。由於他們正在使用的另一個程序,我無法更改英文電腦的語言。

那麼我怎樣才能讓我的程序與英文日期一起工作呢?

我試圖檢測計算機的語言是這樣的:

CultureInfo.CurrentCulture.DisplayName 

然後到今天的日期轉換法(我使用的是今天的日期比較它的到期日期「報警「阻止我們,當一個項目是今天遲到或因):

Today = Today.toString(CultureInfo.CreateSpecificCulture("fr-CA") 

但這似乎並沒有要做到這一點,因爲我的程序不加載之後以正確的方式。

如果您有任何想法,我很願意看他們

謝謝你們

+0

很可能你實際上是在沒有問題的地方創建問題。您需要關心日期格式的唯一原因是您需要從文件中讀取存儲日期或以文本格式保存到存儲中。在任何其他情況下,日期都是二進制的,即只是數字,並且沒有格式。例如,如果用戶通過DateTimePicker控件輸入日期,則每個用戶都可以使用適合自己系統的日期格式,而在代碼中,您可以從控件的Value屬性中獲取DateTime值,這是獨立於任何格式。 – jmcilhinney

+0

請詳細解釋您在應用中如何使用日期,以便我們確定是否有問題需要解決。我期望沒有。 – jmcilhinney

+0

當有人創建項目時,他必須用DateTimePicker選擇交貨日期,然後將項目保存到Access數據庫。然後你有一個DataGridView,它顯示你有一列「警報」的項目。如果交貨日期高於今天的日期,那麼您將發出警報(單元格變爲紅色)。現在,如果計算機設置爲英語,則警報列中不會顯示任何內容 –

回答

0

基於這樣的描述,還有比你正在創建的其他都沒問題。請勿將日期/時間轉換爲Strings,除非您確實需要Strings。你不。

DateTimePicker的情況下,您只需設置FormatLongShort,然後用戶將看到以適合他們的系統,根據其當前的文化設置的格式的日期。在代碼中,您從Value屬性獲得DateTime值,這是一個二進制值,因此格式不相關。

對於DataGridView,如果您有一列包含DateTime值,那麼它們將以基於當前文化的格式顯示。基礎值是二進制的,因此它們沒有格式,但網格必須使用格式才能顯示。每個用戶都會看到他們的期望,因爲系統的文化設置將用於執行該格式。如果您不喜歡使用的格式,則可以將列的DefaultCellStyle.Format屬性設置爲「D」或「d」以分別匹配DateTimePickerLongShort格式。

正如我所說,這種列的單元格中的值是DateTime值,而不是Strings,因此格式無關緊要。如果您想將它們與今天的日期進行比較,那麼您可以採用二進制格式,例如

If CDate(myDataGridViewCell.Value) > Date.Today Then 

在任何時候,您都不必擔心格式,因爲應用程序會在格式有問題的地方自動使用當前的系統區域設置。