我正在尋找一種方法來保持零個位數和幾天,但目前我正在做它現在的方式是行不通的。我正在尋找一些可能發生的事情,如果我沒有正確格式化。格式化日期刪除零
目前我正在尋找只是日期格式爲特定的格式,這裏是我的代碼:
dateFormat = Today.ToString("MM/dd/yyyy")
但是這個值是不是2013年2月13日價值,我期待這是# 2013/2/13 /#刪除所有前導零。這裏發生了什麼,爲什麼它給出#並刪除所有前導零?
我正在尋找一種方法來保持零個位數和幾天,但目前我正在做它現在的方式是行不通的。我正在尋找一些可能發生的事情,如果我沒有正確格式化。格式化日期刪除零
目前我正在尋找只是日期格式爲特定的格式,這裏是我的代碼:
dateFormat = Today.ToString("MM/dd/yyyy")
但是這個值是不是2013年2月13日價值,我期待這是# 2013/2/13 /#刪除所有前導零。這裏發生了什麼,爲什麼它給出#並刪除所有前導零?
相關的問題是:什麼類型的是dateFormat
?如果它是Date
(或DateTime
),則格式化的字符串將被轉換回Date
,格式將會丟失。只有格式化結果指定爲String
時,格式化纔有效。 Date
類型不存儲任何格式。一般格式只適用於字符串。
Dim dateFormat As String
dateFormat = Today.ToString("MM/dd/yyyy")
注意:如果你有Option Strict Off
然後VB自動嘗試轉換不匹配的類型。在您的代碼中,如果dateFormat
的類型爲Date
,則格式化的字符串將自動轉換爲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
您可以用適當的方式VB.NET date formatting申報日期格式的
Dim DateFormat As DateTime = Now
Console.WriteLine(Format(DateFormat, "Short Date"))
這是「舊派的方式」,而不是「正確的方式」;-) – 2013-02-13 20:46:30
但適合解決方案,有時比新的''D''更具可讀性: – spajce 2013-02-13 22:43:29
爲字符串:
Dim dateFormat as string = DateTime.Today.ToString("MM/dd/yyyy")
至於 「哈希」。 This answer解釋它。
DateTime本身並不真正包含散列,也沒有一個 正常格式的字符串也會產生散列。
請顯示您涉及的其他代碼 – 2013-02-13 17:29:29
這是用來格式化日期的全部內容。除了聲明變量Dim dateFormat As DateTime – Criel 2013-02-13 17:31:50
必須在其他地方出現錯誤。格式「MM」和「dd」總是產生一個兩位數的數字! – 2013-02-13 17:53:32