2013-11-22 50 views
2

我的程序中有兩種日期格式。在一臺特定的機器上:Windows在一臺機器上從我的日期中刪除斜槓

  • date.ToString("M/d/yyyy h:m:s tt")正在生產類似11222013 12:0:0 AM的東西。 (:0:0是可以接受的;它是一個通常不會被人讀取的文件。)
  • date.ToString("MM/dd/yyyy hh:mm tt")正在生產諸如11222013 12:00 AM之類的東西。

我的代碼是用C#編寫的。這個人的機器有一些編程經驗,並且能夠用Delphi來獲得同樣的行爲。爲什麼格式化日期中缺少正斜槓?或者我應該建議他打開並鋪平犯罪的箱子?

+2

你到底從'M/d/yyyy h:m:s tt'獲得'11222013 12:0:0 AM'的確切時間? –

+1

這兩種日期格式都不會生成您指示它們的輸出,因此您需要提供更多信息。它們都包含'/'日期分隔符,但都沒有輸出,這不是它的工作原理。要麼你的格式不是你說的那樣,要麼你的輸出不是你指出的。 (您如何設置「系統中的兩種日期格式」?Windows只允許一種日期格式處於活動狀態。) –

+0

@Joker_vD完全普通的 .toString(DateFormat)。它可以在運行代碼的其他所有計算機上正常工作。 –

回答

9

custom date and time format string中,未加引號的斜線只是針對特定文化的DateTimeFormatInfo.DateSeparator(根據文化可以是字符串「 - 」和「。」)的佔位符。如果在其他機器上,某人已經自定義了Windows區域設置並從短日期格式中刪除了分隔符,那麼DateTimeFormatInfo.DateSeparator將是一個空字符串,並且您的格式化日期將不帶斜槓。

要強制使用斜線,請在格式字符串中用引號括住斜槓,或將CultureInfo.InvariantCulture傳遞給格式化方法。例如,你可以寫

date.ToString("M'/'d'/'yyyy h:m:s tt") 

date.ToString("M/d/yyyy h:m:s tt", CultureInfo.InvariantCulture) 

CultureInfo.InvariantCulture會是一個更好的選擇,如果你希望「:」在你格式化時間AM/PM,而不是像」本地化值。 「莫莫鬆/莫梅塞波恩(南非)。

+0

就是這樣。我不知道/有可能被替換。 –