我有一个C#应用程序,它以JSON形式返回身份验证令牌的到期日期,如下所示:
"expirationDate":"Fri, 27 Mar 2015 09:12:45 GMT"
在我的TypeScript中,我在这里检查日期是否仍然有效:
isAuthenticationExpired = (expirationDate: string): boolean => {
var now = new Date().valueOf();
var exp: any = Date.parse(expirationDate).valueOf();
return exp - now <= 0;
};
我想知道的是new Date()
在返回日期时使用的时区是什么?
JavaScript将使用客户端的本地时间,但它也有UTC/GMT方法。以下来自Mozilla:
JavaScriptDate对象支持许多UTC(通用)方法以及本地时间方法。UTC,也称为格林尼治标准时间(GMT),是指世界时间标准设定的时间。本地时间是执行JavaScript的计算机已知的时间。
虽然方法可用于访问UTC和本地时区中的日期和时间,但日期和时间存储在本地时区中:
注意:重要的是要记住,日期和时间存储在本地时区,获取日期和时间或其组件的基本方法也都在本地时区中工作。
参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
默认情况下,JS将使用您的浏览器时区,但如果您想更改显示,例如可以使用toString()
函数;)
var d1=new Date();
d1.toString('yyyy-MM-dd'); //returns "2015-03-27" in IE, but not FF or Chrome
d1.toString('dddd, MMMM ,yyyy') //returns "Friday, March 27,2015" in IE, but not FF or Chrome
正如其他人所说,JavaScript使用客户端系统时间,但您可以从服务器时间创建日期对象,因此每个客户端都将获得相同的当前时间。
var date = new Date("<?php echo date("Y-m-d H:i:s");?>");
它只能在页面加载时工作。如果您想稍后检查日期是否仍然有效,则需要每隔几秒钟将当前日期与服务器日期同步一次。
Javascript new Date()使用的时区是什么?
Date
对象的工作时间是自大纪元(1970年1月1日格林尼治标准时间午夜)以来的毫秒数。它们有像getDay
和getMonth
这样使用JavaScript引擎的本地时区的方法,还有像getUTCDay
和getUTCMonth
这样使用UTC(大致为GMT)的函数。
如果您正在解析一个字符串,则需要确保该字符串的格式是Date
知道如何解析的。规范中唯一定义的格式是ISO-8601的简化派生版本,但它只是在ES5中添加的,他们在规范中错误地指出了如果字符串上没有时区指示器会发生什么,所以你需要确保它上始终有一个时区指示器(目前,ES6会修复它,最终引擎会可靠地使用ES6行为)。这些字符串看起来像这样:
"2015-03-27T09:32:54.427Z"
您可以使用toISOString
方法生成该格式。