Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DateTime.TryParse即使在设置为_C#_.net - Fatal编程技术网

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
,这似乎导致它使用美国日期格式。这是一个很好的答案,尽管我的输入可能会有所不同,但在准确解析之前,我必须检查某些格式。还有另一个重载,它会将
字符串[]
用于多种可能的格式。这是一个很好的答案,虽然我的输入可以变化,但在准确解析之前,我必须检查某些格式。对于多种可能的格式,还有另一个重载需要
字符串[]