我上次发帖时来自我
c# change date type format to ddmmyyyy
我必须在VB.Net WinForm应用程序中工作我遇到Date
或DateTime
类型的问题。
我通常使用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#?我需要它从控制面板中取出它。
答案 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#中。
请注意,我在此答案中使用了ToString
和Date
这两个词。 DateTime
是.NET类型,而DateTime
是内部VB数据类型。两种语言都支持其内在数据类型的文字,但只有VB具有日期的内在数据类型,这就是为什么只有VB支持文字日期。就像C#中的Date
和VB中的int
一样是Integer
类型的别名,因此VB中的Int32
是Date
类型的别名,但是在C#中没有等价物。