[英]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。
解析字符串時,我發現最好使用ParseExact
或TryParseExact
。 要打印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.