0

我正在寻找一种方法将零保持在个位数的月份和几天内,但是我现在正在做的当前方式行不通。我正在寻找一些关于可能发生的事情以及我的格式不正确的见解。

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

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

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

4

3 回答 3

3

相关的问题是:属于什么类型dateFormat?如果它是 a Date(或DateTime),那么格式化的字符串将被转换回 aDate并且格式将丢失。仅当您将格式化结果分配给String. 该Date类型不存储任何格式。格式化一般只适用于字符串。

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

注意:如果你有Option Strict Off那么 VB 会自动尝试转换不匹配的类型。在您的代码中,格式化的字符串将自动转换为ifDate类型。因此是危险的,因为它隐藏了潜在的编程错误。我强烈建议您使用. 您可以按源文件或在.dateFormatDateOption Strict OffOption Strict OnCompile > Option Strict

这样做时,您将丢失一些自动转换,您必须明确指定这些转换,但您会提高代码的安全性。

您甚至可以在菜单中将此选项设置为新项目的默认选项Tools > Options,然后导航到Projects and Solutions > VB Defaults. (至少在 VS 2008 中)。我总是有:

    选项显式打开
    选项严格开启
    选项比较二进制
    选项推断
于 2013-02-13T17:59:01.033 回答
2

将 dateFormat 声明为字符串:

Dim dateFormat as string = DateTime.Today.ToString("MM/dd/yyyy")

至于“哈希”。这个答案解释了它。

DateTime 本身并不真正包含散列,并且任何普通格式字符串都不会产生散列。

于 2013-02-13T17:33:49.963 回答
0

您可以使用正确的 VB.NET日期格式化方式

    Dim DateFormat As DateTime = Now
    Console.WriteLine(Format(DateFormat, "Short Date"))
于 2013-02-13T17:32:09.980 回答