2009-10-21 24 views
2

我正在構建一個新的基於傳統ASP(傳統ASP)的ASP.NET Web應用程序。 5年前構建此代碼的人們使用了很多VBScript函數,如DateDiff。使用VB.NET方法的意義DateAndTime.DateDiff與C#

我目前正在模擬器上進行大量的日期計算。而且我遇到了這些日期之間的惱人的區別,因爲我沒有一個輕鬆的方式來獲得C#中月份之間的差異,就像他們在VB 6中做的那樣。

因此,我選擇使用DateAndTime的路徑。我的ASP.NET Web應用程序上的Microsoft.VisualBasic命名空間中的DateDiff。

你們知道這是否有一些含義?我對這種方法有點擔心。

乾杯,

回答

3

唯一的含義是,您要添加其他組件,您的部署,以及使用的功能,許多C#開發人員(可能需要保持你的代碼的其他人)都沒有意識到。但我個人並不認爲它有太大的錯誤。 MSDN Library文檔通常很好,如果您想解釋爲什麼要使用它,您還可以添加一些註釋。

編輯:我也想指出,Microsoft.VisualBasic是從頭開始爲.NET實現的。它不包含古代的代碼。

+0

我們已經禁止了我們店裏的Microsoft.VisualBasic庫,只是爲了強迫持有者遵守新的.Net庫。 – 2010-01-20 17:30:47

+1

該庫包含有效的有用代碼。這是一個像任何其他庫一樣的庫,並且更受「Visual Basic」的啓發。爲什麼在已經存在的情況下構建,測試,維護和版本化自己的實現? – 2010-01-20 19:34:01

+0

我也同意今年早些時候gWiz的評論;我認爲Microsoft.VisualBasic命名空間/程序集是一件很棒的事情,它可以幫助緩解/加速傳統ASP/VBScript應用程序到.NET的快速遷移/移植,而不必在每次遇到它們時都以新的方式重寫事物。 – Funka 2010-10-07 02:00:17

-1

你很關心這件事,因爲你不應該使用VisualBasic命名空間中的任何類。

的.NET庫提供了一個更好的解決方案稱爲時間跨度,使用它的方式如下:(DT1,及DT2是DateTime S)

TimeSpan ts = dt2 - dt1; //Or ts = dt1.Subtract(dt2) 

至於我想幫忙,我真的想在intellisence看一眼會告訴你休息(只寫這在Visual Studio中,並添加ts.

編輯真正一個月計數:(y2 - y1) * 12 + m2 - m1,有什麼大不了的?

+1

好的,但是如何處理31天或2月的月份(閏年而不是閏年)呢? – 2009-10-21 19:39:47

+0

是的......那是我面臨的問題......結果有點不同 – Daniel 2009-10-21 19:41:20

+0

「你不應該使用VisualBasic命名空間中的任何分類」 - 爲什麼不呢? – AakashM 2009-10-21 19:41:26

0

一種可能性是使用TimeIt指示,但是除以30.4375(平均每月的天數),忽略了小數月份。這足夠接近我目前正在進行的工作,但根據您的需求可能不夠準確。例如,2月1日到3月1日之間的差異將爲0,(根據每月30.4375天的定義)是正確的;但是,對於您的特定目的,這可能不正確。