【问题标题】:.net equivalent of Javascript function.net 相当于 Javascript 函数
【发布时间】:2009-06-15 08:30:43
【问题描述】:

以下 javascript 的 vb.net 或 c# 等效项是什么?

this.browserTime.value = Math.floor((new Date()).getTime() / 1000);

我正在使用 httpwebrequest 登录网站。

从浏览器记录的 PostData 标头如下所示:

goto=&currentSlave=235acbdcd297c9211eef670c6dfbd64d&browserTime=1245052940&username=username&password=password&go=Sign+In

页面上获取浏览器时间值的javascript是:

this.browserTime.value = Math.floor((new Date()).getTime() / 1000);

谢谢

【问题讨论】:

    标签: .net javascript


    【解决方案1】:

    翻译:

    new Date() => DateTime.Now
    .getTime() => .Subtract(New DateTime(1970, 1, 1)).TotalMilliseconds
    Math.floor() => Math.Floor()
    

    所以在 VB 中:

    seconds As Double = Math.Floor( _
       DateTime.Now.Subtract(New DateTime(1970, 1, 1)).TotalMilliseconds / 1000
    );
    

    在 C# 中:

    double seconds = Math.Floor(
       DateTime.Now.Subtract(new DateTime(1970, 1, 1)).TotalMilliseconds / 1000
    );
    

    或者在 VB 中简单地获取秒数而不是毫秒数和除法:

    seconds As Double = Math.Floor(
       DateTime.Now.Subtract(New DateTime(1970, 1, 1)).TotalSeconds
    );
    

    和 C#:

    double seconds = Math.Floor(
        DateTime.Now.Subtract(New DateTime(1970, 1, 1)).TotalSeconds
    );
    

    【讨论】:

      【解决方案2】:

      自 1970 年以来的秒数?

      static readonly DateTime epoch = new DateTime(1970, 1, 1);
      ...
      int seconds = (int)Math.Floor((DateTime.Now - epoch).TotalSeconds);
      

      【讨论】:

        【解决方案3】:

        这取决于您到底需要什么。你似乎想要一个时间戳。因此,您可以使用

        DateTime.Now
        

        如果您真的非常需要自 1970 年以来的秒数,那么您必须进行一些日期数学运算,因为 .NET 时间戳不是基于 UNIX 纪元(无论如何这将是一个实现细节)。

        【讨论】:

        • 还值得一提的是 DateTime.UtcNow
        • UtcNow 不应该是完全相同的时间戳,只是使用另一个时区吗?
        • 当然,出于完整性考虑,因为服务器上的当地时间往往很糟糕,而且问题的意图对我来说似乎......含糊不清...... :)
        • 嗨,不太确定我需要使用什么。我正在使用 httpwebrequest 登录到一个站点。来自帖子标题的 postdata 如下所示: goto=&currentSlave=235acbdcd297c9211eef670c6dfbd64d&browserTime=1245052940&username=username&password=password&go=Sign+In 获取浏览器时间值的 javascript 是: this.browserTime.value = Math.floor((new Date( )).getTime() / 1000);
        • @Bryce - 你应该先将它编辑到帖子中,然后(如果你正在编写处理程序来接收这个?)添加它为什么浏览器时间很重要。听起来您需要浏览器为您提供 UTC 时间。
        【解决方案4】:

        只是为了添加到 Johannes 的评论中,我猜您想在两个日期之间进行比较。如果是这样,您可以像这样使用 TimeSpace 类:

        DateTime now = DateTime.Now;
        DateTime lastWeek = now.Subtract(TimeSpan.FromDays(7));
        TimeSpan difference = now - lastWeek;
        

        【讨论】:

        • 信息,也可以使用now.AddDays(-7),比较简单
        • 或者使用减法运算符:now - TimeSpan.FromDays(7)。或者使用 MiscUtil 扩展,现在 - 7.Days() 我认为这是最明显可读的版本:)
        • @Marc,是的,这样更简单。我只是在写那个例子时忘记了它。 @Jon - 感谢 MiscUtil 的提醒,以前没见过,会检查一下。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多