我正在寻找一种方法将零保持在个位数的月份和几天内,但是我现在正在做的当前方式行不通。我正在寻找一些关于可能发生的事情以及我的格式不正确的见解。
目前我只想将日期格式化为特定格式,这是我的代码:
dateFormat = Today.ToString("MM/dd/yyyy")
但是这个值不是 02/13/2013 的值,我期望它是 #2/13/2013# 删除所有前导零。这里发生了什么,为什么它给出 # 并删除所有前导零?
相关的问题是:属于什么类型dateFormat
?如果它是 a Date
(或DateTime
),那么格式化的字符串将被转换回 aDate
并且格式将丢失。仅当您将格式化结果分配给String
. 该Date
类型不存储任何格式。格式化一般只适用于字符串。
Dim dateFormat As String
dateFormat = Today.ToString("MM/dd/yyyy")
注意:如果你有Option Strict Off
那么 VB 会自动尝试转换不匹配的类型。在您的代码中,格式化的字符串将自动转换为ifDate
类型。因此是危险的,因为它隐藏了潜在的编程错误。我强烈建议您使用. 您可以按源文件或在.dateFormat
Date
Option Strict Off
Option Strict On
Compile > Option Strict
这样做时,您将丢失一些自动转换,您必须明确指定这些转换,但您会提高代码的安全性。
您甚至可以在菜单中将此选项设置为新项目的默认选项Tools > Options
,然后导航到Projects and Solutions > VB Defaults
. (至少在 VS 2008 中)。我总是有:
选项显式打开 选项严格开启 选项比较二进制 选项推断
将 dateFormat 声明为字符串:
Dim dateFormat as string = DateTime.Today.ToString("MM/dd/yyyy")
至于“哈希”。这个答案解释了它。
DateTime 本身并不真正包含散列,并且任何普通格式字符串都不会产生散列。
您可以使用正确的 VB.NET日期格式化方式
Dim DateFormat As DateTime = Now
Console.WriteLine(Format(DateFormat, "Short Date"))