Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用C语言检索准确的客户端时间#_C#_Javascript - Fatal编程技术网

C# 用C语言检索准确的客户端时间#

C# 用C语言检索准确的客户端时间#,c#,javascript,C#,Javascript,直到今天我还在使用DateTime.Now保存用户时间和数据的功能。在后期,我使用JavaScript获取客户端的日期和时间来维护时区。但是当我更改系统的日期和时间并尝试JavaScript时。它显示了我的电脑更改的时间。我需要如何让客户正确的当前日期和时间值。如何得到它 使用不同时区的客户端/服务器时,请不要超过C#&JavaScripts。 例如,在C#中,使用DateTime.UTCNow而不是DateTime.UTC。 每次保存时,您也应该保存时区,稍后您将能够计算本地时间。它也适用于夏

直到今天我还在使用
DateTime.Now保存用户时间和数据的功能。在后期,我使用JavaScript获取客户端的日期和时间来维护时区。但是当我更改系统的日期和时间并尝试JavaScript时。它显示了我的电脑更改的时间。我需要如何让客户正确的当前日期和时间值。如何得到它


使用不同时区的客户端/服务器时,请不要超过C#&JavaScripts。

例如,在C#中,使用DateTime.UTCNow而不是DateTime.UTC。
每次保存时,您也应该保存时区,稍后您将能够计算本地时间。它也适用于夏令时更改。

当使用来自不同时区的客户端/服务器时,您应该使用

例如,在C#中,使用DateTime.UTCNow而不是DateTime.UTC。
每次保存时,您也应该保存时区,稍后您将能够计算本地时间。它也适用于夏令时更改。

DateTime。现在
在服务器上运行,并获取服务器上而不是客户端上配置的日期时间

您必须使用javascript获取客户端时间,您可以通过一个隐藏字段传递值,该字段可以使用javascript的
new Date()
方法存储。要获取GMT的偏移量,请使用
Date.getTimezoneOffset()
,它将以分钟为单位给出偏移量,例如+1 GMT的偏移量将返回-60


最好以GMT格式维护所有日期时间信息,然后根据客户需要使用偏移量。

datetime。现在
在服务器上运行,并获取服务器上而不是客户机上配置的日期时间

您必须使用javascript获取客户端时间,您可以通过一个隐藏字段传递值,该字段可以使用javascript的
new Date()
方法存储。要获取GMT的偏移量,请使用
Date.getTimezoneOffset()
,它将以分钟为单位给出偏移量,例如+1 GMT的偏移量将返回-60


最好以GMT格式维护所有日期时间信息,然后根据客户需要使用偏移量。

您无法获得实际的机器时间。您可以尝试计算客户端的时区,然后进行相应调整


这是一个快速搜索,它实现了一个解决方案,解决了使用JavaScript
Date
对象时出现的一些问题。

您无法获得实际的机器时间。您可以尝试计算客户端的时区,然后进行相应调整


这是一个快速搜索,它实现了一个解决方案,解决了使用JavaScript
Date
对象时出现的一些问题。

始终在服务器端以一种格式维护日期时间。我更喜欢DateTimeOffset,这会为我以正确的格式保存它。。你应该仔细阅读以下内容:

关于在客户端渲染,您有两种选择:

A) 当客户登录时,将其时区存储在cookie中,然后使用此时区为我们的客户提供所有datetime

B) 或者您需要在客户端执行时间巫术以获得最佳效果,这可以通过javascript实现。您需要确保将一个值(比如UTC)传递回您的客户,并且还需要将时间解析为UTC

这里有一个简洁的函数,可以在将时间发送到服务器之前将其解析为UTC

function getDateAsUTC(time, date) {
    var regExTime = /^(\d{1,2}):(\d{2})([AP]M)?$/i;
    var invalidTimeString="invalid time";
    if (segmentsTime = time.replace(" ", "").match(regExTime)) {
        if (segmentsTime[3]) {
            // 12-hour time format with am/pm
            if (parseInt(segmentsTime[1],10) < 1 || parseInt(segmentsTime[1],10) > 12) {
                time = invalidTimeString;
            }
        }
        else {
            // 24-hour time format
            if (parseInt(segmentsTime[1],10) > 23) {
                time = invalidTimeString;
            }
        }
        if (time !== invalidTimeString && parseInt(segmentsTime[2],10) > 59) {
            time = invalidTimeString;
        }
    }
    else {
        time = invalidTimeString;
    }

    if (time !== invalidTimeString) {
        var jsDateFriendlyTime = segmentsTime[1] + ":" + segmentsTime[2] + " " + segmentsTime[3];
        return new Date(date + " " + jsDateFriendlyTime).toGMTString().replace("UTC", "GMT");
    }
    else{
        return time; 
    }
}
函数getDateAsUTC(时间,日期){ var regExTime=/^(\d{1,2}):(\d{2})([AP]M)?$/i; var invalidTimeString=“无效时间”; if(segmentsTime=time.replace(“,”).match(regExTime)){ 如果(分段时间[3]){ //12小时时间格式,上午/下午 if(parseInt(segmentsTime[1],10)<1 | | parseInt(segmentsTime[1],10)>12){ 时间=无效时间字符串; } } 否则{ //24小时制 if(parseInt(segmentsTime[1],10)>23){ 时间=无效时间字符串; } } if(time!==invalidTimeString&&parseInt(segmentsTime[2],10)>59){ 时间=无效时间字符串; } } 否则{ 时间=无效时间字符串; } if(时间!==invalidTimeString){ var jsDateFriendlyTime=segmentsTime[1]+”:“+segmentsTime[2]+”+segmentsTime[3]; 返回新日期(日期+“”+jsDateFriendlyTime).togmString()。替换(“UTC”,“GMT”); } 否则{ 返回时间; } }

为了以正确的格式呈现时间,可以使用

始终在服务器端以一种格式维护日期时间。我更喜欢DateTimeOffset,这会为我以正确的格式保存它。。你应该仔细阅读以下内容:

关于在客户端渲染,您有两种选择:

A) 当客户登录时,将其时区存储在cookie中,然后使用此时区为我们的客户提供所有datetime

B) 或者您需要在客户端执行时间巫术以获得最佳效果,这可以通过javascript实现。您需要确保将一个值(比如UTC)传递回您的客户,并且还需要将时间解析为UTC

这里有一个简洁的函数,可以在将时间发送到服务器之前将其解析为UTC

function getDateAsUTC(time, date) {
    var regExTime = /^(\d{1,2}):(\d{2})([AP]M)?$/i;
    var invalidTimeString="invalid time";
    if (segmentsTime = time.replace(" ", "").match(regExTime)) {
        if (segmentsTime[3]) {
            // 12-hour time format with am/pm
            if (parseInt(segmentsTime[1],10) < 1 || parseInt(segmentsTime[1],10) > 12) {
                time = invalidTimeString;
            }
        }
        else {
            // 24-hour time format
            if (parseInt(segmentsTime[1],10) > 23) {
                time = invalidTimeString;
            }
        }
        if (time !== invalidTimeString && parseInt(segmentsTime[2],10) > 59) {
            time = invalidTimeString;
        }
    }
    else {
        time = invalidTimeString;
    }

    if (time !== invalidTimeString) {
        var jsDateFriendlyTime = segmentsTime[1] + ":" + segmentsTime[2] + " " + segmentsTime[3];
        return new Date(date + " " + jsDateFriendlyTime).toGMTString().replace("UTC", "GMT");
    }
    else{
        return time; 
    }
}
函数getDateAsUTC(时间,日期){ var regExTime=/^(\d{1,2}):(\d{2})([AP]M)?$/i; var invalidTimeString=“无效时间”; if(segmentsTime=time.replace(“,”).match(regExTime)){ 如果(分段时间[3]){ //12小时时间格式,上午/下午 if(parseInt(segmentsTime[1],10)<1 | | parseInt(segmentsTime[1],10)>12){ 时间=无效时间字符串; } } 否则{ //24小时制 if(parseInt(segmentsTime[1],10)>23){
DateTime dtServer=DateTime.Now;
DateTime dtClient=DateTime.Parse(Request.QueryString["dtStr"]); // Or Request.Form
double requestTimeDelta=10f; // max time in seconds between client starts the request,
                             // and this code lines is executed.
double secondsDelta=2f;
DateTime max=dtClient.AddSeconds(requestTimeDelta+secondsDelta);
DateTime min=dtClient.AddSeconds(-secondsDelta);
if (max>=dtServer && min<=dtServer) {
  // time is correct
}
else
{
  // time is incorrect
}