2013-01-06 25 views
1

我使用VB.NET 2008在Windows7上製作一個程序,該程序使用日期和日期時間選擇器,這很好用。VB.NET 2008,XP,DateTime類型

像這樣:

With dtp_date1 

     'here crashes 
     .Text = DateTime.Now.Date.ToString("dd.MM.yyyy.") & " 00:00:00" 

     .Format = DateTimePickerFormat.Custom 
     .CustomFormat = "dd.MM.yyyy. HH:mm:ss tt" 
     .ShowUpDown = False 
    End With 

    With dtp_date2 
     .Text = DateTime.Now.Date.ToString("dd.MM.yyyy.") & " 23:59:59.9999" 
     .Format = DateTimePickerFormat.Custom 
     .CustomFormat = "dd.MM.yyyy. HH:mm:ss tt" 
     .ShowUpDown = False 
    End With 

該工程確定,直到我把這個程序到Windows XP。出現 錯誤:

string was not recognized as a valid Datetime 

我嘗試這樣解決這個問題:

.Text = CDate(DateTimeNow.Date.ToString("dd.MM.yyyy.") & " 00:00:00").ToString 

在這裏得到錯誤:

Conversion from string "06.01.2013. 00.00.00" to type 'Date' is not valid.

因爲我在計劃中有許多地方與日期怎樣做才能修復這個錯誤?

+0

您只想在'string'中使用日期值設置'dtp_date2'嗎? – bonCodigo

+0

您需要檢查XP盒默認的_culture_。這可能與其他機器中的不同。 – Oded

+0

bonCodigo,我想設置dtp_date1和dtp_date2以及更多程序。 Oded,我應該在XP還是在win7中改變「文化」?怎麼做?我可以強制某些「文化」只是我的程序嗎? –

回答

3

從不指定DateTimePicker.Text屬性。如果字符串的格式與文化不匹配,或者控制面板替代日期/時間格式,您將會受到猛烈攻擊。

始終使用DateTimePicker.Value屬性。 DateTime類型的屬性,不受格式問題的影響。修復:

Dim now = DateTime.Now.Date 
    dtp_date1.Value = now 
    dtp_date2.Value = now.AddDays(1) - new TimeSpan(1) 
+0

謝謝漢斯。我嘗試和win7再次工作,但也沒有在XP上。我必須從字符串「01.01.2013。00:00:00」和「31.12.2013。23:59:59.9999」中創建日期。如何做到這一點pordately datetimepicker和XP接受這個日期? –

+1

你爲什麼還在亂搞絃樂?我很清楚**不使用字符串**。改爲使用Value屬性,就像我在代碼片段中展示的一樣。 –

+0

其實,你的例子工作很好(在XP上也是)「今天」。我搞亂了絃樂,因爲在節目中我需要獲得時間「昨天」,「本週」,「上週」,「本月」,「上個月」,「實際年份」以及所有開始日期+時間00: 00:00至結束日期和時間23:59:59.9999。當然,現在我已經將所有這些編程爲字符串並在win7上運行。 –