C# DateTime.TryParse即使在设置为
因此,我的字符串C# DateTime.TryParse即使在设置为,c#,.net,C#,.net,因此,我的字符串dateRangeStart的格式为2019-01-31即2019年1月31日 IFormatProvider culture = new CultureInfo("en-UK", true); if (!string.IsNullOrEmpty(dateRangeStart)) { DateTime d = new DateTime(); if(DateTime.TryParse(dateRangeStart, culture, DateTimeStyles.N
dateRangeStart
的格式为2019-01-31
即2019年1月31日
IFormatProvider culture = new CultureInfo("en-UK", true);
if (!string.IsNullOrEmpty(dateRangeStart))
{
DateTime d = new DateTime();
if(DateTime.TryParse(dateRangeStart, culture, DateTimeStyles.None, out d))
{
/// whatever
}
}
使用相同的例程,如果我输入31-01-2019
,它将无法解析。为什么?我告诉过它这是英国的约会?它不能识别dd-MM-yyyy
格式吗?!但是完全可以使用MM dd yyyy
如果我将区域性
交换为CultureInfo,也会发生这种情况。不变量区域性
而不是使用。这样,您就可以完全控制要解析的字符串表示格式:
if(!string.IsNullOrEmpty(dateRangeStart))
{
日期时间;
if(DateTime.TryParseExact(dateRangeStart,“yyyy-MM-dd”,CultureInfo.InvariantCulture,datetimestyle.None,out d))
{
///随便
}
}
使用,而不是。这样,您就可以完全控制要解析的字符串表示格式:
if(!string.IsNullOrEmpty(dateRangeStart))
{
日期时间;
if(DateTime.TryParseExact(dateRangeStart,“yyyy-MM-dd”,CultureInfo.InvariantCulture,datetimestyle.None,out d))
{
///随便
}
}
我认为它是en GB
而不是en UK
你是对的,但即使将其替换为不变量,它仍然失败?@jamheadart本质上不是我们吗?所以31-01-2019
将不是一个有效的日期,它应该是01-31-2019
。嗯,好吧,但是如果我输入2019-01-31
,它会设法解决这个问题-无论如何,是的en GB
已经确定了它的日期,所以如果它不理解hypen之后的位,它似乎只使用第一部分-在这种情况下en
,这似乎导致它使用美国日期格式。它是en GB
而不是en UK
我认为。你是对的,但即使将其替换为不变量,它仍然失败?@jamheadart本质上不是我们吗?所以31-01-2019
将不是一个有效的日期,它应该是01-31-2019
。嗯,好吧,但是如果我输入2019-01-31
,它会设法解决这个问题-无论如何,是的en GB
已经确定了它的日期,所以如果它不理解hypen之后的位,它似乎只使用第一部分-在这种情况下en
,这似乎导致它使用美国日期格式。这是一个很好的答案,尽管我的输入可能会有所不同,但在准确解析之前,我必须检查某些格式。还有另一个重载,它会将字符串[]
用于多种可能的格式。这是一个很好的答案,虽然我的输入可以变化,但在准确解析之前,我必须检查某些格式。对于多种可能的格式,还有另一个重载需要字符串[]
。