解析时间不起作用,因为我想将“ 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);
没有任何作用
答案 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);
您的第二个和第三个示例也不起作用,因为它们的格式与字符串完全不同。当您使用ParseExact
method解析字符串时,您的字符串和格式应完全匹配。
我还要提及的是,hh
和HH
的说明符都可以在我的代码示例中使用。但是作为一般格式考虑,使用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}");