1.时间格式化方法
formatTime(systemTime) {
let lang = Lang.getLang()
let time = new Date(systemTime * 1000)
let year = time.getFullYear()
let month = time.getMonth() + 1
let date = time.getDate()
let hours = time.getHours()
let minutes = time.getMinutes()
let seconds = time.getSeconds()
if (lang === "zh_CN") {
return year + "/"
+ (month < 10 ? '0' + month : month) + "/"
+ (date < 10 ? '0' + date : date) + "/ "
+ (hours < 10 ? '0' + hours : hours) + ":"
+ (minutes < 10 ? '0' + minutes : minutes) + ":"
+ (seconds < 10 ? '0' + seconds : seconds);
} else {
time = time.toString().split(' ')
time = time[0] + ' ' + time[1] + ' ' + time[2] + ' ' + time[3] + ' ' + time[4]
return time
}
}
2.结合时区计算时间
let browserTimeZone = -new Date().getTimezoneOffset()*60
let timezone = data['timezone']*60*60
let systemTime = data['systemtime'] - browserTimeZone + timezone
this.setState({
NTPServer: data['ntpserver'],
systemTime: systemTime,
timeZone: data['timezone'],
autoSync: data['autosync'] || 0,
synFrequency: data['synfrequency'] || 1,
});
3.公式的由来
1.由于new Date(0)默认获取到的是Thu Jan 01 1970 08:00:00 GMT+0800 (中国标准时间),
js自带的api会根据你电脑所在的时区强行加上或减去(东加西减)时区的毫秒数。
2.直接运用 选中时区后显示的时间(s) = 服务器0时区时间 + 选中的时区总秒数就会导致多了电脑自带时区
3.所以一般运算前都要减掉电脑自带的那部分时区。
4.-new Date().getTimezoneOffset()*60这里时获取到电脑自带时区所占的秒数,一般都是0 - n,而我们要的结果是东区为正,西区为负,所以前面加个负号。
4.时区数组
const timeZoneList = [
{txt: 'UTC-12:00', val: -12},
{txt: 'UTC-11:00', val: -11},
{txt: 'UTC-10:00', val: -10},
{txt: 'UTC-09:00', val: -9},
{txt: 'UTC-08:00', val: -8},
{txt: 'UTC-07:00', val: -7},
{txt: 'UTC-06:00', val: -6},
{txt: 'UTC-05:00', val: -5},
{txt: 'UTC-04:00', val: -4},
{txt: 'UTC-03:00', val: -3},
{txt: 'UTC-02:00', val: -2},
{txt: 'UTC-01:00', val: -1},
{txt: 'UTC+00:00', val: 0},
{txt: 'UTC+01:00', val: 1},
{txt: 'UTC+02:00', val: 2},
{txt: 'UTC+03:00', val: 3},
{txt: 'UTC+04:00', val: 4},
{txt: 'UTC+05:00', val: 5},
{txt: 'UTC+06:00', val: 6},
{txt: 'UTC+07:00', val: 7},
{txt: 'UTC+08:00', val: 8},
{txt: 'UTC+09:00', val: 9},
{txt: 'UTC+10:00', val: 10},
{txt: 'UTC+11:00', val: 11},
{txt: 'UTC+12:00', val: 12},
];