【发布时间】:2017-11-15 00:16:31
【问题描述】:
我上一篇文章来自我
c# change date type format to ddmmyyyy
我必须在 VB.Net WinForm 应用程序中工作 我遇到了 Date 或 DateTime 类型的问题。
我通常使用 C#,但现在我遇到了这个问题,我确定这是其他程序员遇到的常见问题。
我在控制面板中定义了我的日期时间格式,例如“dd/MM/yyyy”。您还可以按照here 中的说明签入Regedit
如果,在我的 WinForm 中,我在 C# 中定义了一个像这样的变量
日期时间 aa = 日期时间.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# 一样接受 Datetime 类型?我需要它从控制面板中获取它。
【问题讨论】:
-
DateTime.Now不会以 any 格式返回日期/时间 - 它是原始日期/时间值。仅当您将原始值转换为字符串表示形式时,格式化才有意义(这是打印出来的)。 -
Date在VB 中只是DateTime的别名,因此Date.Now和DateTime.Now是相同的,并且您的观察必须受到您未在此处显示的内容的影响。两者都没有自己的格式。 -
当您执行
Date.Now.ToString("dd/MM/yyyy")时,您声称 val 保持格式为“MM/dd/yyyy” 你确定吗?ToString()返回一个字符串,而不是日期,所以没有多大意义。 -
差异是由于 VB 支持
DateTime类型的文字而 C# 不支持。当您在 C# 项目的 Watch 窗口等中查看DateTime的值时,您会看到在其上调用ToString的结果。这将尊重系统设置。在 VB 中,您实际上会将值视为文字,您可以通过它包含在“#”分隔符中这一事实来判断。Date文字总是显示为 M/dd/yyyy。它不支持系统设置,因为如果这样做,相同的代码在不同的机器上会以不同的方式工作。 -
这不是问题。无论如何,
DateTime的值仍然完全相同。您正在尝试解决一个不存在的问题。 .NETDateTime值存储为数字,因此系统设置没有影响。只有当您需要将日期显示为文本时,格式才重要,然后您将调用ToString,这将在两种语言中产生完全相同的结果。
标签: c# vb.net datetime datetime-format