我有一些javascript只需要执行,如果它自服务器上计算的日期以来少于这么多秒,但我在日期比较方面遇到了一些麻烦。 这是我尝试过的:
<script type="text/javascript"> var elapsedMillis = 10000; if(Date.now() - <%=(benchmarkDate-new DateTime(1970,1,1)).TotalMilliseconds%> < elapsedMillis) { //do stuff } </script>不幸的是,即使在设置benchmarkDate的十秒内执行,C#TimeSpan也会给我一些毫秒,这些毫秒与JavaScript的Date.now()相差大约14,000秒。
I have some javascript that only needs to execute if it's been less than so-many-seconds since a date that is calculated on the server, but I'm having some trouble with the date comparison. Here's what I've tried:
<script type="text/javascript"> var elapsedMillis = 10000; if(Date.now() - <%=(benchmarkDate-new DateTime(1970,1,1)).TotalMilliseconds%> < elapsedMillis) { //do stuff } </script>Unfortunately, the C# TimeSpan is giving me a number of milliseconds that varies from JavaScript's Date.now() by about 14,000 seconds even if executed within ten seconds of setting benchmarkDate.
最满意答案
这结果是一个时区问题因为我没有意识到JavaScript的Date.now()正在返回UTC日期。 这是我首先将C#日期转换为UTC的修复程序,以防它帮助其他人:
<script type="text/javascript"> var elapsedMillis = 10000; if(Date.now() - <%=(benchmarkDate.ToUniversalTime()-new DateTime(1970,1,1)).TotalMilliseconds%> < elapsedMillis) { //do stuff } </script>This turned out to be a timezone issue because I didn't realize JavaScript's Date.now() was returning a UTC date. Here's my fix to convert the C# date to UTC first, just in case it helps someone else:
<script type="text/javascript"> var elapsedMillis = 10000; if(Date.now() - <%=(benchmarkDate.ToUniversalTime()-new DateTime(1970,1,1)).TotalMilliseconds%> < elapsedMillis) { //do stuff } </script>更多推荐
发布评论