2012-03-16 44 views
0

我一直在使用下面的時間跨度函數來計算兩個日期之間工作正常的天數。asp.net的時間跨度 - 0.5(半天)

Dim dtStart As Date = txtHStart_Date.Text 
    Dim dtEnd As Date = txtHEnd_Date.Text 

    Dim ts As TimeSpan = dtEnd - dtStart 

    txtNoofDays.Text = ts.TotalDays.ToString() 

    Console.WriteLine(ts.TotalDays) 

我現在試着添加一個複選框(作爲半天的選擇)。如果選中該複選框,我希望它的總天數減去0.5。但我發現藍色線告訴我它的錯誤的 「TS =(DTEND - DTSTART) - 0.5」

Dim dtStart As Date = txtHStart_Date.Text 
    Dim dtEnd As Date = txtHEnd_Date.Text 


    Dim ts As TimeSpan = dtEnd - dtStart 


    For Each li As ListItem In CheckBoxList1.Items 
     If li.Value = "Half Day" Then 
     ts = (dtEnd - dtStart) - 0.5 
    Else 
      ts = dtEnd - dtStart 
    End If 

    Next 
    txtNoofDays.Text = ts.TotalDays.ToString() 

    Console.WriteLine(ts.TotalDays) 

任何關於如何糾正

回答

1

ts是你TimeSpan價值的建議。你不能從TimeSpan中減去0.5 - 在這種情況下,我知道你想要它的意思,但爲什麼默認情況下「天」是正確的單位?您可以減去0.5天明確不過:

ts = (dtEnd - dtStart) - TimeSpan.FromDays(0.5) 

它爲什麼你在遍歷所有的項目,但實際上只使用最後一個項目,順便還不清楚。如果您的計劃實際上是使用每個項目的天數,我會試着在計算出天數後進行減法:

Dim days = (dtEnd - dtStart).TotalDays 
If li.Value = "Half Day" Then 
    days = days - 0.5 
End If 

' Use days here