2013-10-13 26 views
1

如何在DateTime.Now和特定的DateTime之間以int形式獲取總天數?可以使用LINQ完成?獲取DateTime.Now和某個DateTime之間的總天數(int)

+2

爲什麼要使用LINQ? LINQ主要是一個處理(大量)數據處理的框架。 –

+2

你需要更清楚一點 - 你只對*當地時間感興趣嗎?還是一個特定的時區?部分日子呢?有*簡單的*方法來這 - 但正確的*方法將需要你更仔細地指定你的要求。您可能還想使用Noda Time(http://nodatime.org) –

回答

8

您可以使用下面的方法簡單地計算差值:

DateTime a = ;//some datetime 
DateTime now = DateTime.Now; 
TimeSpan ts = now-a; 
int days = Math.Abs(ts.Days); 
+0

看起來像'Days'只是改變,而不是總數,應該使用'TotalDays',同時注意'TotalDays'可以是負數,所以如果OP要求**的差異**,我認爲他想要一些正面的價值,因此我們應該使用'Math.Abs​​'加上一些(int)投射來獲得最後的結果。 –

+1

並非如此,'Days'和'TotalDays'之間的區別在於'TotalDays'是一個描述小數部分的double。採取與差異點。 –

+0

我沒有看到這個文檔中指定的:http://msdn.microsoft.com/en-us/library/system.timespan.days.aspx。此外'TimeSpan'不再知道原始日期。 –

3

只要彼此減去兩個DateTime S,爲TimeSpan,並從中獲得TotalDays的組成部分。

TimeSpan diff = DateTime.Now - OtherDateTime 
int days = (int)Math.Abs(Math.Round(diff.TotalDays)); 

它是四捨五入以除去由小時/分鐘/秒引起的分數,並給出絕對值,以便您得到確切的更改。

+0

'TotalDays'是一個'double',描述整數(全天)和分數(餘數)部分。我認爲你至少必須將其轉換爲整數。 –

+1

@CommuSoft:固定的,哎呀:) – Cyral

0

Linq2Object

DateTime.Now.Subtract(yourDateTime).TotalDays 

Linq2Entites

 EntityFunctions.DiffDays(DateTime.Now, yourDateTime) 
+2

你使用了什麼樣的'LINQ-to-Object'? =)) –

+1

'.Subtract()'是'DateTime'上的一個常規方法,不是Linq2Objects。 – CodingWithSpike

+0

@KingKing我的意思是在Linq2Entities中使用Linq2Objecs時不支持 – Alireza

相關問題