我正在寻找一种方法来保持零个数月和数天的零,但是我现在正在做的当前方式不起作用。我正在寻找一些关于可能发生的事情以及我是否正确格式化的见解。
目前我只想将日期格式化为特定格式,这是我的代码:
dateFormat = Today.ToString("MM/dd/yyyy")
然而,这个价值不是02/13/2013的值,我期待它的#2/13/2013#删除所有前导零。这里发生了什么,为什么要给#并删除所有前导零?
答案 0 :(得分:3)
相关问题是:dateFormat
的类型是什么?如果是Date
(或DateTime
),则格式化的字符串将转换回Date
,格式化将丢失。仅当您将格式的结果分配给String
时,格式才有效。 Date
类型不存储任何格式。格式化通常仅适用于字符串。
Dim dateFormat As String
dateFormat = Today.ToString("MM/dd/yyyy")
注意:如果您有Option Strict Off
,那么VB会自动尝试转换不匹配的类型。在您的代码中,如果Date
属于dateFormat
类型,则格式化字符串将自动转换为Date
。因此Option Strict Off
是危险的,因为它隐藏了潜在的编程错误。我强烈建议您使用Option Strict On
。您可以按源文件或Compile > Option Strict
下的项目属性执行此操作。
执行此操作时,您将丢失一些自动转换,并且必须明确指定这些转化,但您将提高代码的安全性。
您甚至可以将此选项设置为菜单Tools > Options
中新项目的默认选项,然后导航至Projects and Solutions > VB Defaults
。 (至少在VS 2008中)。我一直都有:
Option Explicit On Option Strict On Option Compare Binary Option Infer On
答案 1 :(得分:2)
将dateFormat声明为字符串:
Dim dateFormat as string = DateTime.Today.ToString("MM/dd/yyyy")
至于“哈希”。 This answer解释了它。
DateTime本身并不真正包含哈希值,也没有包含哈希值 普通格式字符串也会产生哈希值。
答案 2 :(得分:0)
您可以使用VB.NET date formatting
的正确方法 Dim DateFormat As DateTime = Now
Console.WriteLine(Format(DateFormat, "Short Date"))