JavaScript的时区处理

2017-02-15  本文已影响6288人  张圣兰

几个概念

  1. UTC时间为标准时间, GMT时间比UTC时间有更多误差。
  2. 北京时间比UTC时间快8个小时。

数据库时间(Postgres)

数据库可以储存有时区的时间(timestamp with timezone)和无时区的时间(timestamp without timezone), 多数情况下使用后者。
createupdate给的时间参数有时区表示, 则数据库会依据定义的数据类型自动转化时区, 若没给出时区, 则默认视为标准时间。

JavaScript的基本转化方式

JavaScript的new Date()函数生成的是本地时间。

JavaScript Result
new Date Mon Feb 13 2017 00:00:00 GMT+0800 (CST)
toDateString Mon Feb 13 2017
toGMTString Sun, 12 Feb 2017 16:00:00 GMT
toISOString 2017-02-12T16:00:00.000Z
toJSON 2017-02-12T16:00:00.000Z
toLocaleDateString 2/13/2017
toLocaleTimeString 12:00:00 AM
toLocaleString 2/13/2017, 12:00:00 AM
toString Mon Feb 13 2017 00:00:00 GMT+0800 (CST)
toTimeString 00:00:00 GMT+0800 (CST)
toUTCString Sun, 12 Feb 2017 16:00:00 GMT

UTC时间转本地时间

var toLocal = function(date) {
  // 确保date 最终为Date object
  date = new Date(date);
  var local = date.toLocaleString('en-US', {
    hour12: false,
    year: 'numeric',
    month: '2-digit',
    day: '2-digit',
    hour: '2-digit',
    minute: '2-digit',
    second: '2-digit'
  });
  return local;
};
  1. 通过toLocaleString()方法转化时区, 可以自定义显示样式。

本地时间转UTC时间

总体转化

var toUTC = function(date) {
  // 确保date 最终为Date object
  date = new Date(date);
  // 加入"+08"来标示对应的时区
  var utc = date.toISOString().replace(/Z/, "+00");
  return utc;
};

提取日期数据

上一篇 下一篇

猜你喜欢

热点阅读