2012-10-03 61 views
0

我一直與日期時間值打架幾個小時。我現在的日期值是正確的,但時間依然給我帶來麻煩。考慮以下幾點:與日期和時間戰鬥

Private _pickupDate As DateTime 

Public Property PickupDate As DateTime 
    Get 
     Return _pickupDate 
    End Get 
    Set(ByVal value As DateTime) 
     _pickupDate = value 
     txtPickupDate.Text = value.ToString("yyyy/MM/dd") 
    End Set 
End Property 

Public Property PickupTime As DateTime 
    Get 
     Return DateTime.Parse(ucPickupTime.Time) 
    End Get 
    Set(value As DateTime) 
     ucPickupTime.Time = value.ToString("HH:mm:ss") 
    End Set 
End Property 

請注意: ucPickupTime是由3個DropDownLists(時,分,和秒)的用戶控制。它的Time屬性是一個字符串,總是看起來像HH:mm:ss

假設我正在從MySQL讀取日期時間值2012-10-26 16:00:00

當寫入數據庫時​​,一切正常,但是,當我在閱讀日期時間的時間部分時,我回來了04:00:00(而不是16:00:00)出現在ucPickupTime.Time。此外,當我讀到這成爲一個gridview,它顯示爲2012年10月26日下午4點零零分00秒

顯然,這是不可接受的,因爲有我試過凌晨4點到下午4點

之間有很大的區別有很多方法可以解決這個問題,但是一直沒有找到合適的方法,而且我的想法已經過時。

如果任何人都可以建議一種方法讓我保持真正的時間價值(正如它在數據庫中一樣),並將其置於我的控制範圍內(或至少按照我想要的方式進行格式化),我真的欣賞它。

在此先感謝!

**編輯**
我已更新上述代碼以反映最新更改。這現在格式化數據正確,但更新或插入到數據庫中的記錄時,值顯示如下:

PickupDate | #12:00:00 AM#|日期
PickupTime | #10/4/2012 3:00:00 PM#|日期

我已經注意到在看數據更接近的是,使用的日期值似乎永遠是在其上保存的數據的日期,而不是在txtPickupDate.Text

+0

看起來您正在從您的數據中讀取4PM,這是** 16:00:00的** **。你如何填寫你的GridView? –

+0

@MarkHall只是從數據讀取器,沒有任何格式:'' – Ortund

+0

改變它添加'DataFormatString =「{0:yyyy/MM/dd HH: mm:ss}「'並且gridview正確顯示不是至少 – Ortund

回答

1

txtPickupDate指定的日期。 Text = value.ToString(「HH:mm:ss」)

+0

理想情況下,getter也應該使用Date.ParseExact。 –

+0

雖然日期並不是我在這裏掙扎的,但是這確實給了我一個主意 – Ortund