Meh*_*ner 3 c# string datetime
我从字符串解析日期时间有问题 这里DOT NET FIDDLE 这里是我的解析代码
var DateOfBirth2 = DateTime.Parse(string.Format("{0}-{1}-{2}", "1924", "10", "19"));
Console.WriteLine(DateOfBirth2);
var DateOfBirth = DateTime.Parse(string.Format("{0}-{1}-{2}", "19", "10", "1924"));
Console.WriteLine(DateOfBirth);
Run Code Online (Sandbox Code Playgroud)
问题DateofBirth2
可以成功解析,但DateofBirth
不能和抛出字符串异常
System.FormatException:String未被识别为有效的DateTime
问题是可以为不同的Visual Studio版本中的两个变量解析完全相同的代码.
什么是解析的最佳方法,错误的原因是什么?
DateTime.Parse
CurrentCulture
默认使用设置.
这意味着,您CurrentCulture
有yyyy-MM-dd
标准的日期和时间格式,但它没有dd-MM-yyyy
格式.
在这种情况下,您可以使用自定义日期和时间解析DateTime.TryParseExact
;
string s = "19-10-1924";
DateTime dt;
if(DateTime.TryParseExact(s, "dd-MM-yyyy", CultureInfo.GetCultureInfo("tr-TR"),
DateTimeStyles.None, out dt))
{
Console.WriteLine(dt);
}
Run Code Online (Sandbox Code Playgroud)
既然你来自土耳其,我认为你CurrentCulture
是tr-TR
(像我一样)你可以找到你文化的所有标准日期和时间格式;
foreach(var format in CultureInfo.GetCultureInfo("tr-TR").DateTimeFormat.
GetAllDateTimePatterns())
{
Console.WriteLine(format);
}
Run Code Online (Sandbox Code Playgroud)
输出将是;
dd.MM.yyyy
dd.MM.yy
yyyy-MM-dd
dd MMMM yyyy dddd
dd MMMM yyyy
dd MMMM yyyy dddd HH:mm
dd MMMM yyyy HH:mm
dd MMMM yyyy dddd HH:mm:ss
dd MMMM yyyy HH:mm:ss
dd.MM.yyyy HH:mm
dd.MM.yy HH:mm
yyyy-MM-dd HH:mm
dd.MM.yyyy HH:mm:ss
dd.MM.yy HH:mm:ss
yyyy-MM-dd HH:mm:ss
dd MMMM
dd MMMM
yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK
yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK
ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
yyyy'-'MM'-'dd'T'HH':'mm':'ss
HH:mm
HH:mm:ss
yyyy'-'MM'-'dd HH':'mm':'ss'Z'
dd MMMM yyyy dddd HH:mm:ss
dd MMMM yyyy HH:mm:ss
MMMM yyyy
MMMM yyyy
Run Code Online (Sandbox Code Playgroud)
正如你可以从输出中看到的,yyyy-MM-dd
是标准的日期和时间格式为tr-TR
文化,但没有dd-MM-yyyy
或MM-dd-yyyy
格式.