将日期字符串转换为DateTime格式

我有日期字符串,例如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);

输出: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);

输出:

  

运行时异常(第-1行):字符串未被识别为有效字符串   日期时间。

     

堆栈跟踪:

     

[System.FormatException:字符串未被识别为有效   DateTime。],位于System.DateTimeParse.ParseExact(String s,String   格式,DateTimeFormatInfo dtfi,DateTimeStyles样式)   System.DateTime.ParseExact(String s,字符串格式,IFormatProvider   提供程序)在Program.Main()

cxy495126981 回答:将日期字符串转换为DateTime格式

您需要使用以下正确的格式字符串来格式化输出:

Console.WriteLine("Parsed date: " + Parse.ToString("yyyy-MM-dd HH:mm:ss.fff"));
//Parsed date: 1999-10-03 00:00:00.000

如果您未指定格式,.NET会选择它认为合适的格式(当您不在美国时通常不会选择格式)。

您还需要严格区分DateTime值及其以string形式表示。不管您如何设置格式,值本身都将保持不变。

,

您在parse方法中使用的格式字符串表示输入字符串的格式。

DateTime没有显示格式,实际上是一个数字值,表示自特定纪元以来的滴答声数量。 来自official documentation

  

时间值以100纳秒为单位进行测量,称为刻度。一个特定的日期是自公历0001年1月1日午夜12:00(C.E.)起的滴答数。该数字不包括将以leap秒添加的刻度。例如,刻度值31241376000000000L表示日期0100年1月1日(星期五)午夜12:00:00。

解析字符串时,我发现最好使用ParseExactTryParseExact。要打印我们的DateTime值的字符串表示形式,请使用ToString的重载,该重载包含表示要显示的格式的string

var BrazilianDateString = "03/10/1999";
var DateTimeValue = DateTime.ParseExact(BrazilianDate,"dd/MM/yyyy",CultureInfo.InvariantCulture);
Console.WriteLine(DateTimeValue.ToString("yyyy-MM-dd HH:mm:ss.fff");
,

此代码对我有用:

        DateTime dt = new DateTime();

        string x = "03/10/1999 22:10:10";

        dt = DateTime.Parse(x);

        Console.WriteLine(dt.ToShortDateString());
        Console.WriteLine(dt.ToShortTimeString());

        Console.ReadLine();

控制台输出:

1999年10月10日

22:10

不要使用CultureInfo,DateTime可以自己理解西班牙语-巴西的日期

本文链接:https://www.f2er.com/3152144.html

大家都在问