[英]DateTime.ToString() does not work as expected with slash as date-separator
我想將日期時間轉換為“MM / dd / yyyy”,當我轉換為此格式時,日期變得像“xx-xx-xxxx”。 我寫的代碼就像
var format = "MM/dd/yyyy HH:mm";
DateTime dt = DateTime.Now;
var dateString = dt.toString(format); // the value i am getting is 05-28-2014 12:47 but i require the 'dateString' value to be `05/28/2014 12:53`.
這有什么問題。
你的文化文化的日期分隔符似乎是-
這就是你得到它的原因。 您必須指定InvariantCulture
:
string dateString = dt.toString("MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture);
請參閱: “/”自定義格式說明符
“/”自定義格式說明符表示日期分隔符,用於區分年,月和日。 從當前或指定區域性的DateTimeFormatInfo.DateSeparator屬性中檢索適當的本地化日期分隔符。
另一種方法是使用\\
來逃避/
:
string dateString = dt.toString(@"MM\/dd\/yyyy HH\:mm");
但在我看來,如果你已經知道/
作為“當前文化的日期分隔符”的特殊含義,那么使用正確的CultureInfo
(或InvariantCulture
)會更好(就可讀性而言)。
這取決於您當前的文化日期分隔符。 嘗試包括InvariantCulture,如下所示:
var dateStringFormat= dt.toString("MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture);
來自@TimSchmelter的答案的另一種方法是轉義特殊符號/
和:
因此它們不被視為日期和時間分隔符。
var dateString = dt.toString(@"MM\/dd\/yyyy HH\:mm");
您將在轉換日期和時間時指定格式,即DateTime.Now.ToString(“MM / dd / yyyy hh:mm ss tt”)
更多參考。 http://msdn.microsoft.com/en-us/library/system.datetime.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.