DateTime.TryParse没有解析简单的日期字符串C#

时间:2017-09-14 19:29:16

标签: javascript c# datetime cookies

我在Javascript中设置了一个cookie,其值是当前日期。我正在尝试在我的代码中检查此值,但DateTime.TryParse("09/14/2017")无效。这是我的完整代码:

var cookie = Request.Cookies["DateCookie"];

if (cookie == null || String.IsNullOrEmpty(cookie.Value)) return false;

DateTime expiration;
if (DateTime.TryParse(cookie.Value, out expiration))
{
    if (expiration > DateTime.UtcNow) return true;
}

cookie.Value = "09/17/2017";这是由以下Javascript设置的:

var d= new Date();
d= d.toLocaleDateString();
document.cookie = "DateCookie=" + d;

编辑:我将行改为

var date = cookie.Value

if (DateTime.TryParseExact(date, "MM/dd/yyyy", new CultureInfo("en-US"), DateTimeStyles.None, out expiration))
{ ...
}

并且仍然返回false

编辑2:当我看到DateTime.TryParse无效时,我的意思是当我希望它返回有效日期时它返回false

编辑3:我添加了这个测试代码,两个案例都返回false。为什么会这样?

var testdate = "09/14/2017";
DateTime x;
var outcome = DateTime.TryParse(testdate, out x);
var outcome2 = DateTime.TryParseExact(date, "MM/dd/yyyy", new CultureInfo("en-US"), DateTimeStyles.None,
    out x);

1 个答案:

答案 0 :(得分:1)

设置cookie的Javascript返回了一个没有前导0的日期字符串(“9/14/2017”)

var d= new Date();
d= d.toLocaleDateString();

因此,带有“MM / dd / yyyy”的TryParseExacty没有解析它。通过在月份<1时添加前导零来修复。 10