如何在Page_Load事件中获取客户端PC日期和时间

时间:2014-03-21 02:45:10

标签: c# javascript asp.net .net datetime

实际上,我正在开发一个诊所管理系统,在一个屏幕上,我需要显示添加到队列中的今天的病人。
为此:我打电话给DateTime.Now; 实际上我的主机服务器位于加拿大位置,我在马来西亚。所以两者之间有12小时的差距,记录直到下午12点才显示。
在使用Google搜索解决方案时,我通过JavaScript找到了解决方案。

 <label id="lblTime" runat="server" style="font-weight: bold"></label> 

 <script type="text/javascript">
        $(document).ready(function () {
            ShowTime();
        });

        function ShowTime() {
            var dt = new Date();
            document.getElementById("lblTime").innerHTML = dt.toLocaleTimeString();
            window.setTimeout("ShowTime()", 1000); // Here 1000(milliseconds) means one 1 Sec  
        }
    </script>

实际上,它显示时间,但是当我在后面的代码上得到文本时,它给了我一个空字符串。

string strrr = lblTime.InnerHtml.ToString();

任何人都可以指导我完成这个吗? 我在做任何错误吗? 还有其他办法吗?

实际上,我需要!isPostback Page_load中的日期和时间

3 个答案:

答案 0 :(得分:0)

ShowTime()将在Page_Load之后执行。你当前的设计不会起作用。

您可以使用jQuery ajax调用方法后面的方法并将客户日期/时间传递给它。

看看这篇文章:http://coderskey.blogspot.com/2013/04/how-to-call-code-behind-function-using.html

这是代码片段。你会想要“SetCurrentTime”。

function ShowCurrentTime() {
$.ajax({
    type: "POST",
    url: "CS.aspx/GetCurrentTime",
    data: '{name: "' + $("#<%=txtUserName.ClientID%>")[0].value + '" }',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: OnSuccess,
    failure: function(response) {
        alert(response.d);
    }
});

}

function OnSuccess(response) {
    alert(response.d);
}

答案 1 :(得分:0)

您可能希望将日期和时间字符串传递回UTC或具有本地时区偏移的本地时间的服务器。对于前者,使用toISOString方法,该方法以ISO 8601格式返回UTC日期和时间:

var now = new Date();

var UTCString = now.toISOString(); // 2014-03-21T03:28:52.531Z

对于后者,你必须自己构建字符串:

function toLocalISOString(d) {

  function pad(n){
    var sign = n < 0? '-' : '';
    n = Math.abs(n);
    return sign + (n<10? '0' : '') + n;
  }

  function minsToHHMM(n){
    var hh = pad(n/60 |0);
    var mm = pad(Math.abs(n%60));
    return  hh + '' + mm;
  }

  var offset = minsToHHMM(d.getTimezoneOffset() * -1);

  return d.getFullYear() + '-' + pad(d.getMonth() + 1) + '-' + pad(d.getDate()) +
         'T' + pad(d.getHours()) + ':' + pad(d.getMinutes()) + ':' + pad(d.getSeconds()) +
         (offset<0?'-' : '+') + offset;
}

toLocalISOString(now); // 2014-03-21T14:28:52+1100

请注意,javascript中的时区偏移量仅为几分钟,与通常的偏移量符号相反,例如: UTC1000是-600,UTC-0530是330.上面忽略了毫秒,如果需要,可以包括它们作为十进制秒。

其他格式也可以适应。

答案 2 :(得分:0)

我想我找到了答案 我按照链接:Here
但无法在Page_load中获取日期和时间 像Ajax Calls这样的东西需要完成PostBack 我计划在!ispostback 事件之后立即采取计时器然后回发页面,然后我将使计时器< strong>启用错误。
谁能提出比这更好的解决方案?