格式化日期删除零

时间:2013-02-13 17:25:32

标签: vb.net winforms date format

我正在寻找一种方法来保持零个数月和数天的零,但是我现在正在做的当前方式不起作用。我正在寻找一些关于可能发生的事情以及我是否正确格式化的见解。

目前我只想将日期格式化为特定格式,这是我的代码:

dateFormat = Today.ToString("MM/dd/yyyy")

然而,这个价值不是02/13/2013的值,我期待它的#2/13/2013#删除所有前导零。这里发生了什么,为什么要给#并删除所有前导零?

3 个答案:

答案 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"))