如何在Javascript中获取当前日期、月份和年份,而不是用户PC';s日期、月份和年份?

如何在Javascript中获取当前日期、月份和年份,而不是用户PC';s日期、月份和年份?,javascript,date,Javascript,Date,如何在Javascript中获取当前日期、月份和年份。我正在使用JS的Date对象的getFullYear()和getMonth()函数。但这些函数返回我电脑的年份和月份。如果我将电脑的日期更改为较旧或即将到来的日期,则这些函数将返回这些月份和年份 无论用户电脑显示的日期是什么,我如何获得当前的日期、月份和年份?JavaScript无法神奇地工作。它所拥有的日期的唯一指示是它所运行的机器拥有的日期。JavaScript不能神奇地工作。它的唯一日期指示是运行它的机器的日期。如果您的代码没有发送到可

如何在Javascript中获取当前日期、月份和年份。我正在使用JS的
Date
对象的
getFullYear()
getMonth()
函数。但这些函数返回我电脑的年份和月份。如果我将电脑的日期更改为较旧或即将到来的日期,则这些函数将返回这些月份和年份


无论用户电脑显示的日期是什么,我如何获得当前的日期、月份和年份?

JavaScript无法神奇地工作。它所拥有的日期的唯一指示是它所运行的机器拥有的日期。

JavaScript不能神奇地工作。它的唯一日期指示是运行它的机器的日期。

如果您的代码没有发送到可信的源(如已知的NTP服务器),您将受本地机器的支配

即使您确实试图转到受信任的源,本地计算机也可能通过捕获您的TCP流量来破坏它

而且,即使您创建了自己的可信机器,使用加密来传递正确的日期和时间,本地机器也可以通过更改JavaScript来颠覆这一点

归根结底,这是一场军备竞赛,几乎可以肯定的是,如果你认为你可以保护你的代码不受任何攻击,那就太愚蠢了。也许这是一个很好的时机去思考为什么你首先需要一个准确的日期


如果我们知道这一点,我们也许能够在你目前所在的盒子之外提供建议。“我如何以Y的方式做X?”这种形式的问题太多了,打消了大量非Y的潜在解决方案:-)

如果您的代码没有发送到可信的源(如已知的NTP服务器),您将受到本地机器的摆布

即使您确实试图转到受信任的源,本地计算机也可能通过捕获您的TCP流量来破坏它

而且,即使您创建了自己的可信机器,使用加密来传递正确的日期和时间,本地机器也可以通过更改JavaScript来颠覆这一点

归根结底,这是一场军备竞赛,几乎可以肯定的是,如果你认为你可以保护你的代码不受任何攻击,那就太愚蠢了。也许这是一个很好的时机去思考为什么你首先需要一个准确的日期


如果我们知道这一点,我们也许能够在你目前所在的盒子之外提供建议。太多形式的问题“我如何以Y的方式做X?”打折大量非Y的潜在解决方案:-)

简而言之,如果您只需要月份和年份,您可以在服务器级别构造datetime对象,并将其作为字符串,然后从该变量中放入javascript,您可以再次从中重构javascript日期对象,您可以提取getyear和getmonth任何您需要的内容。

简而言之,如果您只需要月份和年份,就可以在服务器级别构造datetime对象,并将其作为字符串,然后从该变量输入javascript,您可以再次从中重构javascript日期对象,您可以根据需要提取getyear和getmonth。

我想您可以这样做

var ds = ... // Some ajax call to server 
var d = new Date(ds);

在你有了日期之后,你可以很容易地从日期中得到月份和年份的部分,我想你可以这样做

var ds = ... // Some ajax call to server 
var d = new Date(ds);
在你有了日期之后,你可以很容易地从日期中得到月份和年份的部分,你没有提到你的服务器端语言,但我在Grails中这样解决了它:


var serverDate=新日期(${new Date().getTime()});
//使用服务器日期
如您所见,
${new Date().getTime()}
是在服务器端执行的Grails代码,因此其值类似于1420700836298(datetime),然后
var serverDate=new Date(1420700836298)将在客户端执行;显然,根据服务器时间,serverDate将是date对象

因此,您的任务将是用服务器端语言替换
${new Date().getTime()}

N.B这不是ajax调用,它只执行一次;当页面第一次加载时。

您没有提到您的服务器端语言,但我在Grails中这样解决了它:


var serverDate=新日期(${new Date().getTime()});
//使用服务器日期
如您所见,
${new Date().getTime()}
是在服务器端执行的Grails代码,因此其值类似于1420700836298(datetime),然后
var serverDate=new Date(1420700836298)将在客户端执行;显然,根据服务器时间,serverDate将是date对象

因此,您的任务将是用服务器端语言替换
${new Date().getTime()}


N.B这不是ajax调用,它只执行一次;当页面第一次加载时。

JavaScript在客户端机器上运行,因此这是它唯一可以读取的时间。如果您希望获得“实际”时间(除了一般的日期/时间和时区),您应该依赖第三方服务器来提供这一时间(可能通过XHR调用?)。JavaScript在客户机上运行,因此这是它唯一可以读取的时间。如果你想获得“实际”时间(除了一般的日期/时间和时区),你应该依靠第三方服务器来提供这个时间(可能通过XHR呼叫?)。记住paxdiablo的警告,一些好的资源。记住paxdiablo的警告,一些好的资源。