我曾經想過在你的問題,還有就是我昨天錯過了一個方面。我認爲Format
函數沒有意義,但即使它看起來很奇怪,它也可能是合理的。讓我解釋。
在VB6中,我們有
tAvailableDate = DateAdd("d", 21, Format(Now, gDATEFORMAT))
爲什麼它看起來奇怪的(甚至是錯誤的)? Now
是Date
。 Format
將此日期轉換爲String
(以及準確地包含String
的Variant
),但DateAdd
需要Date
參數以便能夠添加日期。 DateAdd
聲明如下:的
Function DateAdd(Interval As String, Number As Double, Date)
而是給予警告或編譯器錯誤,VB6這個字符串轉換默默地回到一個Date
並將它傳遞給DateAdd
。所以我的第一個假設是放棄這個Format
。
但是這個Format
可能會對結果產生所需的影響,具體取決於如何定義gDATEFORMAT
。如果gDATEFORMAT
僅包含日期部分,則格式化功能將刪除時間部分!然而,這可以簡單地通過使用Date
函數,而不是使用Now
函數在VB6
tAvailableDate = DateAdd("d", 21, Date)
或DateTime.Today
在.NET(C#或VB.NET)來實現的。
但是gDATEFORMAT
可能只包含月份和年份。 VB6(用我的瑞士區域):
Date ==> 27.06.2012
Format(Date,"MM.yyyy") ==> "06.2012"
CDate(Format(Date,"MM.yyyy")) ==> 01.06.2012
正如你所看到的,格式化的日期將不得不返回當月的第一天,在這種情況下的效果。通過增加21天,你總能得到當前的第22個月。這與將21天添加到當前日期完全不同!在C#中,你可以實現與
DateTime today = DateTime.Today;
tAvailableDate = new DateTime(today.Year, today.Month, 22);
同樣爲了確定哪一種方法是正確的,則必須知道什麼gDATEFORMAT
包含或者,如果這是可變的,格式化日期,然後解析生成的字符串獲得再次約會。
你想達到什麼目的?如果你可以告訴我們,你只需要知道.NET的人,而不需要知道.NET *和* VB6的人。 –