繁体   English   中英

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

[英]Convert date string to DateTime format

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

Output: 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);

output:

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

堆栈跟踪:

[System.FormatException: String 未被识别为有效的 DateTime。] 在 System.DateTimeParse.ParseExact(String s, String format, DateTimeFormatInfo dtfi, DateTimeStyles style) at System.DateTime.ParseExact(String s, String format, IFormatProvider provider)在 Program.Main()

您需要使用正确的格式字符串格式化 output,如下所示:

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没有显示格式,实际上它是一个数值,表示自特定 Epoch 以来的刻度数。 来自官方文档

时间值以 100 纳秒为单位,称为滴答声。 一个特定的日期是自 GregorianCalendar 日历中 0001 年 1 月 1 日午夜 12:00 以来的刻度数。 该数字不包括闰秒添加的刻度。 例如,刻度值 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();

控制台 output:

1999 年 3 月 10 日

22:10

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM