将DateAdd和格式代码从VB6转换为C#

eri*_*_13 7 c# vb6 vb6-migration

我在vb中有以下代码 -

tAvailableDate = DateAdd("d", 21, Format(Now, gDATEFORMAT))
Run Code Online (Sandbox Code Playgroud)

我试图将其转换为C#.

到目前为止我已将此转换为 -

tAvailableDate = DateAdd("d", 21, Format (DateTime.Now, Global.gDATEFORMAT));
Run Code Online (Sandbox Code Playgroud)

但我无法找到替换DateAdd()Format()功能.

有任何想法吗?谢谢.

Ste*_*art 12

DateAdd是一个旧的VB6方法,它被转移到VB.NET中以实现向后兼容.如果Microsoft.VisualBasic在C#项目中包含命名空间,也可以使用它在C#中工作,但我不建议在C#或VB.NET中使用该方法.这是你应该怎么做(它也更容易阅读):

tAvailableDate = DateTime.Now.AddDays(21);
Run Code Online (Sandbox Code Playgroud)


Cod*_*lla 11

我的VB6有点生疏,但如果我记得,你试图增加21天.所以这就是你想要做的:

tAvailableDate = DateTime.Now.AddDays(21);
Run Code Online (Sandbox Code Playgroud)

UPDATE

您提到您已将变量转换为DateTimea string.如果您需要将其恢复为a string(看起来您可能来自其他评论),那么您想要致电:

tAvailableDate.ToString("[format string]");
Run Code Online (Sandbox Code Playgroud)

有关格式化字符串的帮助,请参阅:http://msdn.microsoft.com/en-us/library/az4se3k1.aspx

  • +1.是的,使用Format转换为字符串然后尝试添加天数是没有意义的.天可以添加到日期,但不能添加到字符串.可能它适用于VB6,因为VB6自动将字符串转换回`Date`,从而掩盖了这个错误!但如果它通过使用另一种文化而不是在`gDATEFORMAT`中指定的方式将其转换回来,则可能会产生错误(例如通过反转日期和月份). (2认同)