DateTime.ToString()无法按预期使用斜杠作为日期分隔符

时间:2014-05-28 07:32:11

标签: c# c#-4.0 datetime

我想将日期时间转换为“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`. 

有什么问题。

4 个答案:

答案 0 :(得分:21)

你的文化文化的日期分隔符似乎是-,这就是你得到它的原因。您必须指定InvariantCulture

string dateString = dt.toString("MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture);  

请参阅:The "/" Custom Format Specifier

  

“/”自定义格式说明符表示日期分隔符   用于区分年,月和日。适当的   从中检索本地化日期分隔符   当前或指定的DateTimeFormatInfo.DateSeparator属性   培养

另一种方法是使用/转义\

string dateString = dt.toString(@"MM\/dd\/yyyy HH\:mm");  

但在我看来,如果你已经知道/作为“当前文化的日期分隔符”的特殊含义,那么使用正确的CultureInfo(或{更好(在可读性方面) {1}})而不是。

答案 1 :(得分:2)

这取决于您当前的文化日期分隔符。尝试按如下方式包含InvariantCulture:

var dateStringFormat= dt.toString("MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture);  

答案 2 :(得分:1)

@ TimSchmelter回答的另一种方法是转义特殊符号/:,这样它们就不会被视为日期和时间分隔符。

var dateString = dt.toString(@"MM\/dd\/yyyy HH\:mm");

答案 3 :(得分:0)

您将在转换日期和时间时指定格式,即DateTime.Now.ToString(" MM / dd / yyyy hh:mm ss tt")

更多参考。 http://msdn.microsoft.com/en-us/library/system.datetime.aspx