DateTime.ParseExact在C#中不起作用,日期格式转换不起作用

时间:2019-06-30 10:51:39

标签: c# datetime date-conversion

解析时间不起作用,因为我想将“ 13-06-2019 00:00:00”(dd-MM-yyyy HH:mm:ss)转换为“ 06-13-2019 00:00:00”( MM-dd-yyyy HH:mm:ss)

尝试了Convert.toDateTime()DateTime.ParseExact()

IFormatProvider culture = new CultureInfo("en-US");
var a = DateTime.ParseExact(a, "MM-dd-yyyy hh:mm:ss", CultureInfo.InvariantCulture);
var b = DateTime.ParseExact(a, "yyyy-MM-dd HH:mm:ss", null);
var c = DateTime.ParseExact(a, "yyyy-MM-dd HH:mm:ss", culture);

没有任何作用

2 个答案:

答案 0 :(得分:3)

DateTime结构在幕后使用Gregorian calendar,该日历中没有第13个月。

因此,用MM specifier解析13是错误的。我强烈怀疑您尝试改用dd-MM-yyyy HH:mm:ss格式。

string a = "13-06-2019 00:00:00";
DateTime  b = DateTime.ParseExact(a, "dd-MM-yyyy HH:mm:ss", CultureInfo.InvariantCulture);

Here a demonstration

您的第二个和第三个示例也不起作用,因为它们的格式与字符串完全不同。当您使用ParseExact method解析字符串时,您的字符串和格式应完全匹配

我还要提及的是,hhHH的说明符都可以在我的代码示例中使用。但是作为一般格式考虑,使用dd-MM-yyyy HH:mm:ss格式比其他选项更为常见和可靠。

答案 1 :(得分:1)

DateTime.ParseExact(date,format,culture)的format参数是要转换的日期字符串的源格式,返回值是date类型,您可以按照所需的格式将其转换回字符串。

var a = "13-06-2019 00:00:00";

IFormatProvider culture = new CultureInfo("en-US");
DateTime b = DateTime.ParseExact(a, "dd-MM-yyyy hh:mm:ss", CultureInfo.InvariantCulture);

Console.WriteLine($"{b:MM-dd-yyyy HH:mm:ss}");