-1

在我的网站上,我会向人们展示他们打开我的页面的时间。因此,当他们在 2013 年 4 月 29 日上午 10:09 打开它时,它会显示:2013 年 4 月 29 日上午 10:09:14

这一切在我的本地版本上运行良好。

但现在我的网站在线,时间显示延迟 5 分钟。我打开它的时间:2013 年 4 月 29 日上午 10:10 它显示我:29-4-2013 10:05:19

谁能帮我在网上显示正确的时间。我要显示的时间必须是当地时间。

编码:

        <td>Capture Time:</td> // label
            <td>@DateTime.Now.ToString()</td>
4

4 回答 4

5

您显示的时间是服务器时间......并且您希望它与本地时间相同。

如果您的服务器与您的客户端计算机位于不同的时区,则显示的时间将不同。

您可能需要考虑使用 javascript 并在客户端上执行此操作。

或者以标准格式(如 UTC)显示服务器时间,客户端可以尝试确定与本地时间的差异。

于 2013-04-29T08:15:34.223 回答
1

DateTime.Now 将向您显示服务器日期时间。如果您的服务器和您位于同一时区,那么我认为您的本地系统时间与服务器日期时间不同。

此外,如果您的服务器位于不同的时区,那么您应该考虑在您的时区转换,然后再在 UI 上显示日期时间。

在 ASP.NET 中转换不同时区的时间

于 2013-04-29T08:17:42.993 回答
0

看起来它以不同的格式显示(dd-MM-yyyy当你想要的时候MM/dd/yyyy)。确保您的文化在生产服务器上的 web.config 中设置正确:

<system.web>
    <globalization requestEncoding="utf-8" responseEncoding="utf-8"
        culture="en-US" />
</system.web>

另外,尝试在方法中指定格式ToString

DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss tt");

这将以您想要的格式显示日期。但是,时间取决于服务器的时间,不一定与本地计算机上的时间相匹配。

于 2013-04-29T08:19:15.313 回答
0

这将需要服务器端的日期和时间。如果服务器在美国,如果您在印度,那么您将获得 12 小时的差异。为了解决这个问题,创建一个隐藏的输入字段,然后将一个 Javascript 例程连接到表单的 onsubmit 事件。该例程将使用客户端计算机上的时间填充隐藏字段。

通过使用 HTML 控件“HtmlInputHidden”类,隐藏字段可以与 ASP.NET 一起使用。您只需为输入控件提供 runat="server" 属性,就像任何其他服务器端控件一样。

然后,服务器可以在表单回发时读出这个时间。如果您需要在许多地方执行此操作,您甚至可以将其封装在服务器控件中。

var now = new Date();
now.format("dd/M/yy h:mm tt"); 

将此日期时间复制到具有 runat="server" 属性的隐藏字段并从服务器获取该值。

于 2013-04-29T08:20:30.267 回答