vb.net默认date.now格式化与c#default.Now格式化

时间:2017-11-15 00:16:31

标签: c# vb.net datetime datetime-format

我上次发帖时来自我

c# change date type format to ddmmyyyy

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

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

我在控制面板中定义了我的日期时间格式,如“dd / MM / yyyy”。另外,请按照here

中的说明检查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#?我需要它从控制面板中取出它。

1 个答案:

答案 0 :(得分:2)

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

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

只有VB支持日期的文字。例如,在C#中,您必须为硬编码日期执行类似的操作:

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

你可以在VB中做同样的事情:

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

但你也可以这样做:

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

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

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

但这根本不是问题。 DateTime变量的实际值不会改变。它们实际上根本不包含格式。它们只是系统中的数字。当您想要将值表示为文本时,格式只是一个问题。当您需要这样做时,您将在您的值上调用DateTime,这将符合系统设置,无论是在VB还是C#中。

请注意,我在此答案中使用了ToStringDate这两个词。 DateTime是.NET类型,而DateTime是内部VB数据类型。两种语言都支持其内在数据类型的文字,但只有VB具有日期的内在数据类型,这就是为什么只有VB支持文字日期。就像C#中的Date和VB中的int一样是Integer类型的别名,因此VB中的Int32Date类型的别名,但是在C#中没有等价物。