2015-02-09 116 views
0
DateTime? arrival = (DateTime?)(t.ArrivalDate.Value); 
    DateTime? departure = (DateTime?)(t.DepartureDate); 

好吧,我知道他們兩個是可以爲null和.TotalDays爲空的對象不起作用。所以,請告訴我,我應該如何找到這兩個對象之間的天差異。找到兩個日期時間之間的TotalDays?變量

注: 這兩個對象包含日期(S),即不爲空

+1

DATEDIFF(日,DATE1,DATE2) – 2015-02-09 05:23:17

+0

是什麼DATEDIFF? – 2015-02-09 05:23:51

+0

'時間跨度差異=到來 - 出發;' – 2015-02-09 05:23:52

回答

2

既然沒有意義的價值,他們的區別,如果其中任何一個爲空,你只需要在那裏他們並非如此關心自己:

DateTime? arrival = (DateTime?)(t.ArrivalDate.Value); 
DateTime? departure = (DateTime?)(t.DepartureDate); 
double? totalDays = arrival.HasValue && departure.HasValue 
    ? (double?)(departure - arrival).GetValueOrDefault().TotalDays 
    : null; 

減法應該因爲工作隱式轉換到DateTime

+0

不工作。請在你自己的調試器中運行這個然後粘貼在這裏:) – 2015-02-09 05:27:16

+0

固定。本質是正確的,我只需要調整語法。 :) – 2015-02-09 05:29:07

+0

日期時間? departure = DateTime.Now.AddDays(2.5);爲什麼你加2.5? – 2015-02-09 05:30:01

1

注:這兩個對象包含日期(S),即不爲空

如果您確定日期從不有null,那麼你可以使用.Value爲可空的DateTime對象。當它們中的任何一個爲空時,你將會得到異常。

double days = departure.Value.Subtract(arrival.Value).TotalDays; 
0
//Set dates 
    DateTime? beginDate = DateTime.Now; 
    DateTime? endDate = DateTime.Now.AddDays(10); 

    //Check both values have a value (they will based on above) 
    //If they do get the ticks between them 
    long diff = 0; 
    if (beginDate.HasValue && endDate.HasValue) 
     diff = endDate.Value.Ticks - beginDate.Value.Ticks; 

    //Get difference in ticks as a time span to get days between. 
    int daysDifference = new TimeSpan(diff).Days; 
0

在這裏,我給你測試代碼,請看看:

DateTime? startDate = DateTime.Now; 
     DateTime? endDate = DateTime.Now.AddDays(5); 


     long differenceOfDays = 0; 
     if (startDate.HasValue && endDate.HasValue) 
      differenceOfDays = endDate.Value.Ticks - startDate.Value.Ticks; 

     int daysDifference = new TimeSpan(differenceOfDays).Days; 
相關問題