用例是我通过ajax调用获取millis(来自epoch)的日期,现在需要在javascript中进行解释。这相当于UTC的某个时间点。
现在我需要在PST中显示这个日期,因为这是用户唯一的相关时区,无论他们从哪里打开页面。 另外,我需要以不同的格式显示它,例如'yyyy-mm-dd HH:mm',而不是默认的Locale字符串。
有人可以告诉我,我该怎么做。
答案 0 :(得分:2)
使用UNIX毫秒值加上PST的偏移量创建一个新日期,然后使用getUTC系列调用创建格式化字符串。
答案 1 :(得分:1)
Moment.js对于这类事物来说是一个非常好的库。
答案 2 :(得分:0)
我相信当您使用新的Date()函数时,时区由用户的时区设置决定。
var myDateTime = 1312312732923;
var myDate = new Date(myDateTime);
var myFormattedDate = myDate.getFullYear() + "-" + (myDate.getMonth()+1) + "-" + myDate.getDay();
答案 3 :(得分:0)
使用Date
对象:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date
Javascript的Date对象使用毫秒而不是秒,因此您必须将UNIX时间戳乘以1000:
var myDate = new Date(unix_timestamp * 1000);
然后,您可以使用特定于本地的Date对象来执行您喜欢的任何操作:
var output = myDate .getHours() + ':';
output += myDate .getMinutes() + ':';
output += myDate .getSeconds();
alert(output);
编辑啊,无论语言环境如何,总是错过了关于使用PST的部分。 unix_timesamp
再次是您从服务器获取的epoch / UNIX时间戳:
在此处试试:http://jsfiddle.net/46PYZ/
// set to the UTC offset for the target timezone, PST = UTC - 8
var target_offset = -8;
// create a Date object
var myDate = new Date();
// add local time zone offset to get UTC time in msec
var utc_milliseconds = (unix_timesamp * 1000) + (myDate .getTimezoneOffset() * 60000);
// set the time using the calculated UTC timestamp
myDate.setTime(utc_milliseconds + (3600000 * target_offset));
// now build the yyyy-mm-dd HH:mm format
var output = myDate.getFullYear() + '-';
var month = myDate.getMonth() + 1;
output += (month < 10 ? '0' + month : month) + '-';
output += myDate.getDate() + ' ';
var hours = myDate.getHours() + 1;
output += (hours < 10 ? '0' + hours : hours) + ':';
var minutes= myDate.getMinutes() + 1;
output += (minutes< 10 ? '0' + minutes : minutes);
答案 4 :(得分:0)
JavaScript现在可以设置您想要显示内容的时区。我使用Flot作为库进行制图,他们建议的解决方案是在显示日期时使用getUTC方法。这意味着您的服务器代码无法从epoch发送标准millis(因为这将显示GMT时间),但是对服务器进行小幅调整将使您的日期在客户端上正确显示。
要了解此问题,请参阅http://flot.googlecode.com/svn/trunk/API.txt,然后查找“时间序列数据”标题