【问题标题】:How to compare a C# DateTime to Javascript's Date.now()如何将 C# DateTime 与 Javascript 的 Date.now() 进行比较
【发布时间】:2016-11-24 01:16:59
【问题描述】:

我有一些 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 秒。

【问题讨论】:

  • 我在this SO question 中找到了 Nick Gotch 的计算。这对你来说是一个解决方案吗?
  • @JeroenHeier 我认为基本上是这样。但我不喜欢在没有解释的情况下使用数字,所以我将发布一个我发现稍微透明的解决方法。谢谢你的提示! :)
  • 我觉得this question和this question有更好的解释。

标签: javascript c# datetime


【解决方案1】:

这原来是一个时区问题,因为我没有意识到 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>    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多