2017-07-19 113 views
0
DateTime followingTrialDate = Convert.ToDateTime(row["FollowingTrialDate"]); 
if (followingTrialDate.AddDays(-14)) 
{ 
    ModuleBody = davaTarih.ToShortDateString() + " tarihli dava'ya 14 (on dört) gün kalmıştır."; 
    ModuleBody = "sayın ilgili, \r\n \r\n" + "esas no: " + esasNo + "\r\n" + "dava tarihi: " + davaTarih.ToShortDateString() + "\r\n" + "sonraki duruşma tarihi: " + sonrakidurusmaTar + "\r\n" + "kısa açıklama: " + kısaAciklama + "\r\n\r\n" + "bilginize,"; 
} 

它在「if」循環中給出錯誤。錯誤:從DateTime格式中減去天數

Cannot implicitly Convert Type 'System.DateTime' to 'bool'

我知道錯誤,「if」循環獲取布爾值。但我無法從DateTime類型獲得 的日期。如何從DateTime類型減去14天?

+9

你想要什麼你,如果條件檢查? –

+0

'if(followingTrialDate == followingTrialDate.AddDays(-14))',這足夠嗎?作爲一般規則,如果條件必須使用'bool'或返回'bool'的表達式。 –

+0

爲了決定是否進入if塊,if必須將某些事情評估爲真或假。 DateTime.addDays結果是另一個DateTime對象。你不能將'DateTime'解釋爲真或假。你的if語句沒有任何意義。在英語中,您的if語句的內容爲「如果trialDate減去14天」。這是不完整和荒謬的。你是否想將它與其他日期,也許是當前日期進行比較? – ADyson

回答

4

您正在減去罰款日子。 followingTrialDate.AddDays(-14)是正確的,它將返回followingTrialDate減去14天(作爲新的DateTime)。問題是你在if語句中沒有任何比較:

Can not implicitly Convert Type 'System.DateTime' to 'bool'

準確地描述了問題。您的代碼類似於:

if (new DateTime()) { 
    // do something 
} 

這產生完全相同的錯誤。如果日期時間是什麼?它不能是truefalseIf只對布爾值進行操作。

我懷疑你想比較一下><

這樣的工作,例如:

if (followingTrialDate.AddDays(-14) < DateTime.Now) 
0
DateTime followingTrialDate = Convert.ToDateTime(row["FollowingTrialDate"]).AddDays(-14); 

會做的伎倆。但是,您可能想在此處執行一些錯誤處理(如果row["FollowingTrialDate"]無法轉換爲DateTime並因此引發異常?)。

剩下的唯一問題就是你想要檢查你的if條件。

2

您在if語句中有錯誤。函數AddDays返回DateTime(link)和而不是布爾值。

如果你想減去天,你是正確的道路上:

DateTime dt = new DateTime(2017, 7, 20); 
dt = dt.AddDays(-5); 
Console.WriteLine(dt.ToString()); // output: 15. 07. 2017 
0

if語句必須一個布爾表達式 - 日期不是一個布爾表達式

而是因爲你是讓你的來自DataRow的日期,它可能爲空,爲什麼不嘗試這樣的事情,這將檢查行是否爲空,如果沒有,然後計算日期前14天。

1

Cannot implicitly Convert Type 'System.DateTime' to 'bool'

DateTime.AddDays方法返回一個新的日期時間,增加了天的指定數量的此實例的值。而if期望一個評估爲布爾值的條件。這種不匹配會導致上述指定的錯誤。

how to subtract from DateTime type 14 days ?

對於這一點,你必須的AddDays()結果分配給一個DateTime變量如下所示:

DateTime PrevDate = followingTrialDate.AddDays(-14); 
// Proceed with PrevDate 
0

這裏,我們另闢蹊徑,從日期時間

DateTime oldDt = dt.Subtract(TimeSpan.FromDays(14)); 
減去天

row["FollowingTrialDate"]應該解析爲DateTime作比較。 例如,格式爲mm/dd/yyyy

你能應付這樣的:

if(row["FollowingTrialDate"]!=null 
{ 
    DateTime dt=DateTime.ParseExact(row["FollowingTrialDate"].ToString(),"mm/dd/yyyy"); 
    if(dt < oldDt) //or any date comparison you like 
    { 
     //code here 
    } 
}