DateTime转换为无效格式

时间:2013-09-30 07:15:27

标签: c# datetime

我尝试将9/29/2013 2:44:28 PM(mm / dd / yyyy)转换为dd / mm / yyyy格式。

转换后我得到了一个奇怪的日期。

我试过

dateTimeVar.ToString("dd/mm/yyyy");

29/44/2013

日期本身就是DateTime的类型。

4 个答案:

答案 0 :(得分:9)

小写mm表示分钟,请尝试此操作:

dateTimeVar.ToString("dd/MM/yyyy");

但是,如果这取决于您当地的文化。如果您当前文化的日期分隔符不同,/将被替换为{1}}。因此,如果您想强制执行,请使用CultureInfo.InvariantCulture:

dateTimeVar.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);

答案 1 :(得分:3)

MM是几个月,mm是几分钟。这就是为什么它得到你的分钟(44)而不是你的月份值。

像使用它一样;

dateTimeVar.ToString("dd/MM/yyyy");

退房;

请记住,/在将其用作日期分隔符时具有特殊含义。它将替换为您当前的文化日期分隔符。强制使用InvariantCulture会更好。

dateTimeVar.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);

看看;

  

如果我想将dd / MM / yyyy中的字符串转换为DateTime怎么办?

然后您可以使用DateTime.ParseExact方法。

  

将指定的日期和时间字符串表示形式转换为它   DateTime等效使用指定的格式和特定​​于文化   格式信息。字符串表示的格式必须匹配   准确的指定格式。

作为一个例子;

string s = "01/01/2013";
DateTime dt = DateTime.ParseExact(s, "dd/MM/yyyy", CultureInfo.InvariantCulture);
Console.WriteLine(dt);

输出将是;

1/1/2013 12:00:00 AM

这里有 DEMO

答案 2 :(得分:2)

dateTimeVar.ToString("dd/mm/yyyy"); // Change to dd/MM/yyyy

问题是mm代表分钟,你需要MM这将是几个月

答案 3 :(得分:0)

蒂姆的回答是正确的,但要完全删除格式字符串,你可以使用。 ' ToShortDateString'

DateTime date = DateTime.Today;

var stringDate = date.ToShortDateString();
var stringDate2 = date.ToString("dd/MM/yyyy");