Open Sunshine168 opened 6 years ago
最近有处理到关于时区的问题,这里做一个记录。
首先,我们一般在处理的时间的时候会用到时间戳,然而时间戳本身是不具有时区的概念。
eg:
const ts = 1534246614831 //在系统设置为中国时间的时候。 console.log(new Date(1534246614831)) //Tue Aug 14 2018 19:36:54 GMT+0800 (中国标准时间) //在系统设置为巴西时间的时候 console.log(new Date(1534246614831))//Tue Aug 14 2018 08:36:54 GMT-0300 (巴西利亚标准时间) //所以,时间在展示给用户的时候需要按照一个规定的时区进行转化(由我们提供给他们选择),将时间戳格式成当地的时间。 /** * @function formatedTime2DateByZone * @param {number} timestamp 需要转换的时间戳 * @param {number} targetTimezoneOffset 需要偏移的时区 * @param {boolean} reverse 是否反转 * @returns {Date} */ export const formatedTime2DateByZone = ( timestamp, targetTimezoneOffset, reverse ) => { const date = new Date(timestamp); const currentTimezoneOffset = new Date().getTimezoneOffset() / 60; let timezoneoffset; if (!reverse) { timezoneoffset = currentTimezoneOffset - targetTimezoneOffset; } else { timezoneoffset = targetTimezoneOffset - currentTimezoneOffset; } return addHours(date, timezoneoffset); };
最近有处理到关于时区的问题,这里做一个记录。
首先,我们一般在处理的时间的时候会用到时间戳,然而时间戳本身是不具有时区的概念。
eg: