我有日期字符串,例如03/10/1999格式是dd/MM/yyyy(pt-BR格式)。
而且我需要将此日期转换为类似SQL的格式yyyy-MM-dd HH:mm:ss.fff。
我尝试使用Parse和ParseExact函数,但到目前为止没有成功。我将下面的结果...
使用解析
var BrazilianDate = "03/10/1999";
var Parse = DateTime.Parse(BrazilianDate, new CultureInfo("pt-BR"));
Console.WriteLine("Parsed date: " + Parse);
Run Code Online (Sandbox Code Playgroud)
输出: Parsed date: 10/3/1999 12:00:00 AM
没有连字符或毫秒...
使用ParseExact
var BrazilianDate = "03/10/1999";
var ParseExact = DateTime.ParseExact(BrazilianDate, "yyyy-MM-dd HH:mm:ss.fff", new CultureInfo("pt-BR"));
Console.WriteLine(ParseExact);
Run Code Online (Sandbox Code Playgroud)
输出:
运行时异常(第-1行):字符串未被识别为有效的DateTime。
堆栈跟踪:
[System.DateTimeParse.ParseExact(String s,字符串格式,DateTimeFormatInfo dtfi,DateTimeStyles样式),位于System.DateTime.ParseExact(String s,字符串格式,IFormatProvider提供者)处的[System.FormatException:字符串未被识别为有效的DateTime。]在Program.Main()
您需要使用正确的格式字符串来格式化输出,如下所示:
Console.WriteLine("Parsed date: " + Parse.ToString("yyyy-MM-dd HH:mm:ss.fff"));
//Parsed date: 1999-10-03 00:00:00.000
Run Code Online (Sandbox Code Playgroud)
如果您未指定格式,.NET会选择它认为合适的任何格式(当您不在美国时,通常不会选择正确的格式)。
您还需要严格区DateTime分值及其string形式。无论您如何设置格式,值本身都将保持不变。