Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
用javascript处理日期(格式和时区)_Javascript_Date - Fatal编程技术网

用javascript处理日期(格式和时区)

用javascript处理日期(格式和时区),javascript,date,Javascript,Date,使用案例是,我通过一个ajax调用获取以毫秒为单位的日期(从epoch开始),现在需要在javascript中进行解释。这对应于UTC中的某个时间点 现在我需要在PST中显示这个日期,因为这是用户唯一相关的时区,无论他们从哪里打开页面。 另外,我需要以不同的格式显示它,比如'yyyy-mm-dd HH:mm',而不是默认的区域设置字符串 有人能告诉我怎么做吗。我相信时区是由用户在使用new Date()函数时的时区设置决定的 var myDateTime = 1312312732923; va

使用案例是,我通过一个ajax调用获取以毫秒为单位的日期(从epoch开始),现在需要在javascript中进行解释。这对应于UTC中的某个时间点

现在我需要在PST中显示这个日期,因为这是用户唯一相关的时区,无论他们从哪里打开页面。 另外,我需要以不同的格式显示它,比如'yyyy-mm-dd HH:mm',而不是默认的区域设置字符串


有人能告诉我怎么做吗。

我相信时区是由用户在使用new Date()函数时的时区设置决定的

var myDateTime = 1312312732923; 
var myDate = new Date(myDateTime); 

var myFormattedDate = myDate.getFullYear() + "-" + (myDate.getMonth()+1) + "-" + myDate.getDay();

我相信当您使用new Date()函数时,时区是由用户的时区设置决定的

var myDateTime = 1312312732923; 
var myDate = new Date(myDateTime); 

var myFormattedDate = myDate.getFullYear() + "-" + (myDate.getMonth()+1) + "-" + myDate.getDay();

使用
日期
对象:

Javascript的日期对象的工作时间是毫秒而不是秒,因此您必须将UNIX时间戳乘以1000:

var myDate = new Date(unix_timestamp * 1000);
然后,您可以使用本地特定的日期对象来执行任何您想执行的操作:

var output = myDate .getHours() + ':';
output += myDate .getMinutes() + ':';
output += myDate .getSeconds();
alert(output);
编辑啊,错过了关于始终使用PST的部分,而不管语言环境如何
unix\u timesamp
再次是您从服务器获得的历元/unix时间戳:

请在此处尝试:

//设置为目标时区的UTC偏移量,PST=UTC-8
var target_offset=-8;
//创建日期对象
var myDate=新日期();
//添加本地时区偏移以获取UTC时间(毫秒)
变量utc_毫秒=(unix_时间放大器*1000)+(myDate.getTimezoneOffset()*60000);
//使用计算出的UTC时间戳设置时间
myDate.setTime(utc_毫秒+(3600000*目标_偏移量));
//现在构建yyy-mm-dd HH:mm格式
var output=myDate.getFullYear()+'-';
var month=myDate.getMonth()+1;
输出+=(月<10?'0'+月:月)+'-';
输出+=myDate.getDate()+'';
var hours=myDate.getHours()+1;
输出+=(小时数<10?'0'+小时数:小时数)+':';
var minutes=myDate.getMinutes()+1;
输出+=(分钟<10?'0'+分钟:分钟);

使用
日期
对象:

Javascript的日期对象的工作时间是毫秒而不是秒,因此您必须将UNIX时间戳乘以1000:

var myDate = new Date(unix_timestamp * 1000);
然后,您可以使用本地特定的日期对象来执行任何您想执行的操作:

var output = myDate .getHours() + ':';
output += myDate .getMinutes() + ':';
output += myDate .getSeconds();
alert(output);
编辑啊,错过了关于始终使用PST的部分,而不管语言环境如何
unix\u timesamp
再次是您从服务器获得的历元/unix时间戳:

请在此处尝试:

//设置为目标时区的UTC偏移量,PST=UTC-8
var target_offset=-8;
//创建日期对象
var myDate=新日期();
//添加本地时区偏移以获取UTC时间(毫秒)
变量utc_毫秒=(unix_时间放大器*1000)+(myDate.getTimezoneOffset()*60000);
//使用计算出的UTC时间戳设置时间
myDate.setTime(utc_毫秒+(3600000*目标_偏移量));
//现在构建yyy-mm-dd HH:mm格式
var output=myDate.getFullYear()+'-';
var month=myDate.getMonth()+1;
输出+=(月<10?'0'+月:月)+'-';
输出+=myDate.getDate()+'';
var hours=myDate.getHours()+1;
输出+=(小时数<10?'0'+小时数:小时数)+':';
var minutes=myDate.getMinutes()+1;
输出+=(分钟<10?'0'+分钟:分钟);

使用UNIX毫秒值加上PST偏移量创建新日期,然后使用getUTC系列调用创建格式化字符串。

使用UNIX毫秒值加上PST偏移量创建新日期,然后使用getUTC系列调用创建格式化字符串。

JavaScript现在可以设置要在其中显示内容的时区。我使用Flot作为图表库,他们建议的解决方案是在显示日期时使用getUTC方法。这意味着您的服务器代码无法从epoch发送标准毫秒(因为这将显示GMT时间),但服务器上的一个小调整将使您的日期在客户端上正确显示


要了解该问题,请参阅并查找标题“时间序列数据”

JavaScript现在有一种方法可以设置要在其中显示内容的时区。我使用Flot作为图表库,他们建议的解决方案是在显示日期时使用getUTC方法。这意味着您的服务器代码无法从epoch发送标准毫秒(因为这将显示GMT时间),但服务器上的一个小调整将使您的日期在客户端上正确显示


要了解这个问题,请参阅并查找标题“时间序列数据”

对于这种类型的东西来说是一个非常好的库。

对于这种类型的东西来说是一个非常好的库。

javascript中是否有任何时区更改功能(开箱即用或在库中)?是的,您可以使用date对象的getTimezoneOffset()方法来确定差异@Maxx:getTimezoneOffset()不允许更改时区,因此上面的“是”不正确。它应该是“不,但是您可以使用getTimezoneOffset()在不同的时区显示它”,这是一个很好的观点。除了时间本身,没有任何东西可以更改时区。javascript中是否有任何时区更改功能(现成的或库中的)?是的,可以使用date对象的getTimezoneOffset()方法来确定差异@Maxx:getTimezoneOffset()不允许更改时区,因此上面的“是”不正确。它应该是“不,但是您可以使用getTimezoneOffset()在不同的时区显示它”,这是一个很好的观点。除了时间本身,没有任何东西可以改变时区。javascript中是否有任何时区改变功能(现成的或库中的)?这个答案根本没有解决这个问题。这将显示计算机本地时区中的时间。而且,不,没有办法设定