【发布时间】:2017-09-14 19:29:15
【问题描述】:
我在 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))
{ ...
}
这仍然返回错误
编辑 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);
【问题讨论】:
-
为我工作。为什么说它不起作用?你的默认文化是什么?
-
我说它不起作用,因为我单步执行我的代码并且它没有返回值
-
不返回值是什么意思?如果你有一个非 void 函数,它必须返回一个值
-
为了开发者的未来,请永远不要内联你的 if 语句
-
通常是这样的。
标签: javascript c# datetime cookies