我在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);
答案 0 :(得分:1)
设置cookie的Javascript返回了一个没有前导0的日期字符串(“9/14/2017”)
var d= new Date();
d= d.toLocaleDateString();
因此,带有“MM / dd / yyyy”的TryParseExacty没有解析它。通过在月份<1时添加前导零来修复。 10