我曾经想过在你的问题,还有就是我昨天错过了一个方面。我认为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的人。 –