时间的配置

219 阅读2分钟

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.结合时区计算时间

// 选中时区后显示的时间(s) = 服务器0时区时间 - 浏览器时区总秒数(东8区) + 选中的时区总秒数
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},
];