【问题标题】:Formatting date removes zeroes格式化日期删除零
【发布时间】:2013-01-29 08:09:56
【问题描述】:

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

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

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

但是,它的值不是 02/13/2013 的值,我期望它是 #2/13/2013# 删除所有前导零。这是怎么回事,为什么要给出 # 并删除所有前导零?

【问题讨论】:

  • 请显示您所涉及的其余代码
  • 这就是用于格式化日期的全部内容。除了声明变量 Dim dateFormat As DateTime
  • 其他地方肯定有错误。 MMdd 格式总是产生一个两位数!

标签: vb.net winforms date format


【解决方案1】:

你可以使用VB.NET的正确方式date formatting

    Dim DateFormat As DateTime = Now
    Console.WriteLine(Format(DateFormat, "Short Date"))

【讨论】:

  • 这是“老派方式”而不是“正确方式”;-)
  • 但适合解决方案,有时比新的更易读:D
【解决方案2】:

将 dateFormat 声明为字符串:

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

至于“哈希”。 This answer 解释它。

DateTime 本身并不真正包含哈希值,并且没有 普通格式的字符串也会产生哈希值。

【讨论】:

    【解决方案3】:

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

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

    注意:如果您有Option Strict Off,那么 VB 会自动尝试转换不匹配的类型。在您的代码中,如果dateFormatDate 类型,格式化字符串将自动转换为Date。因此Option Strict Off 是危险的,因为它隐藏了潜在的编程错误。我强烈建议您使用Option Strict On。您可以在每个源文件或Compile > Option Strict 下的项目属性中执行此操作。

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

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

    选项显式打开 选项严格开启 选项比较二进制 选项推断

    【讨论】:

      猜你喜欢
      • 2013-06-25
      • 2015-06-06
      • 2015-07-16
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 1970-01-01
      • 1970-01-01
      • 2018-12-08
      相关资源
      最近更新 更多