vb.net默认日期.新格式与c#默认.正在格式化



我上次发布

c#将日期类型格式更改为ddmmyyyy

我必须在VB.Net WinForm应用程序中工作。我对DateDateTime类型有问题。

我通常使用C#,但现在我遇到了这个问题,我相信这是其他程序员遇到的常见问题。

我在控制面板中定义了我的日期时间格式,如"dd/MM/yyyy"。另外,你可以在Regedit中查看,因为它在这里

如果,在我的WinForm中,我定义了一个像这样的变量I C#

DateTime-aa=DateTime.Now

DateTime.Now检索经过检查的格式为"dd/MM/YYYY"的当前日期。

但如果我问VB.Net同样的问题,就像这个

Dim val As New Date
val = Date.Now

val的当前日期格式为"MM/dd/yyyy">

即使我设置了

val=Date.Now.ToString("dd/MM/yyyy")

val将格式保持为"MM/dd/yyyy">

我分配给变量Datetime的每个日期,它都会自动将格式"dd/MM/yyyy"转换为"MM/dd/yyyy"。

我如何配置VB.Net以接受日期时间类型作为C#?我需要它从控制面板上取下来。

这里没有实际问题,但感知到的差异是由于VB支持Date文本,而C#不支持。C#和VB都支持数字类型、字符串、布尔值等的文字。

var str = "Hello World";
var num = 100;
var flag = true;
Dim str = "Hello World"
Dim num = 100
Dim flag = true

不过,只有VB支持日期的文字。例如,在C#中,您必须对硬编码日期执行以下操作:

var dt = new DateTime(1969, 6, 19);

你可以在VB:中做基本相同的事情

Dim dt As New DateTime(1969, 6, 19)

但你也可以这样做:

Dim dt = #6/19/1969#

在VB中使用日期文字时,始终使用M/dd/yyyy格式。它根本无法利用系统设置,因为这意味着相同的代码在不同的机器上会有不同的行为。

现在,当您在调试器中运行项目并使用"监视"窗口等查看变量或其他表达式的值时,如果类型支持,调试器将显示文字值。如果类型不支持文字,您将看到对对象调用ToString的结果。这意味着调试器将始终以M/dd/yyy格式显示VB项目中DateTime值的内容,因为它显示的是文字Date,而它在C#项目中显示的内容取决于您的系统设置,因为它是在DateTime上调用ToString的结果。

不过,这根本不是一个问题。DateTime变量的实际值不变。它们实际上根本不包含格式。它们只是系统中的数字。只有当您希望将值表示为文本时,格式才是一个问题。当您需要这样做时,您将根据您的值调用ToString,这将遵守系统设置,无论是在VB还是C#中。

注意,我在这个答案中使用了术语DateDateTimeDateTime是一个.NET类型,而Date是一个内在的VB数据类型。这两种语言都支持其内部数据类型的文字,但只有VB有用于日期的内部数据类型,这就是为什么只有VB支持文字日期。正如C#的int和VB的IntegerInt32类型的别名一样,VB中的Date也是DateTime类型的别名,但C#中没有等效的。

最新更新