# 时区
- 世界各国家与地区经度不同,地方时也有所不同,因此会划分为不同的时区。正式的时区划分,每隔经度15°划分一个时区,包括24个时区,每一时区由一个英文字母表示。
- 我国在东八区。
由TimeZonesBoy - US Central Intelligence Agency,公有领域,维基百科时区图
# GMT
- 格林尼治平时(英语:Greenwich Mean Time,GMT)是指位于英国伦敦郊区的皇家格林尼治天文台当地的平太阳时,因为本初子午线被定义为通过那里的经线。
- 由于地球每天的自转是有些不规则的,而且正在缓慢减速,因此格林尼治平时基于天文观测本身的缺陷,已经被原子钟报时的协调世界时(UTC)所取代。
# UTC
- 协调世界时(英语:Coordinated Universal Time,法语:Temps Universel Coordonné,简称UTC)是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治标准时间,与世界时(UT1)保持差异在0.9秒以内。
- 中华人民共和国采用ISO 8601:2000的国家标准GB/T 7408-2005《数据元和交换格式 信息交换 日期和时间表示法》中亦称之为协调世界时。
- 在时间后面直接加上一个“Z”(不加空格),“09:30 UTC”就写作“09:30Z”或是“0930Z”。
- UTC偏移量用以下形式表示:±[hh]:[mm]、±[hh][mm]、或者±[hh],如果所在区时比协调世界时早1个小时(例如柏林冬季时间),那么时区标识应为“+01:00”、“+0100”或者直接写作“+01”。"UTC+8"表示当协调世界时(UTC)时间为凌晨2点的时候,当地的时间为2+8点,即早上10点。
# Unix时间
- UNIX时间,或称POSIX时间是UNIX或类UNIX系统使用的时间表示方式:从协调世界时1970年1月1日0时0分0秒起至现在的总秒数,不考虑闰秒[1]。
- 在多数Unix系统上Unix时间可以透过date +%s指令来检查。
# Unix时间戳
- Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
- 无论区域如何,Unix时间戳都被解释为相同,不涉及时区问题。时区只是在展示时将时间戳同时区一起计算。
- 在编程中一般用时间戳表示时间,long类型好计算,且不用考虑时区问题。
# js实现
Create Date
var today = new Date();
var birthday = new Date('December 17, 1995 03:24:00');
var birthday = new Date('1995-12-17T03:24:00');
var birthday = new Date(1995, 11, 17);
var birthday = new Date(1995, 11, 17, 3, 24, 0);
Date to Timestamp
console.log(+new Date())
console.log(new Date().valueOf())
console.log(Date.now())
console.log(new Date().getTime())
console.log(Number(new Date()))
Timestamp to Date
function stampToTime(timestamp) {
let date
const len = timestamp.toString().length
if (len === 13) {
date = new Date(timestamp)
} else if (len === 10) {
date = new Date(timestamp * 1000)
}
const Y = date.getFullYear()
const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1)
const D = date.getDate()
const h = date.getHours()
const m = date.getMinutes()
const s = date.getSeconds()
return `${Y}-${M}-${D} ${h}:${m}:${s}`
}