時(shí)間戳
指格林威治時(shí)間1970年01月01日00時(shí)00分00秒(北京時(shí)間1970年01月01日08時(shí)00分00秒)起至現(xiàn)在的總秒數(shù)。通俗的講, 時(shí)間戳是一份能夠表示一份數(shù)據(jù)在一個特定時(shí)間點(diǎn)已經(jīng)存在的完整的可驗(yàn)證的數(shù)據(jù)。
時(shí)區(qū)
由于世界各國家與地區(qū)經(jīng)度不同,地方時(shí)也有所不同,因此會劃分為不同的時(shí)區(qū)。正式的時(shí)區(qū)劃分,其中包括24個時(shí)區(qū),每一時(shí)區(qū)由一個英文字母表示。同一時(shí)刻,各個地區(qū)的本地時(shí)間是不同的。
總結(jié)
不同的時(shí)區(qū)時(shí)間不同,但時(shí)間戳具有時(shí)區(qū)無關(guān)性,這時(shí)候就需要涉及到轉(zhuǎn)換到當(dāng)?shù)貢r(shí)間格式,以及當(dāng)?shù)貢r(shí)區(qū)哪一天等
以下計(jì)算某個時(shí)間戳的本地當(dāng)天時(shí)間(秒),時(shí)間戳是根據(jù)0時(shí)區(qū)為基準(zhǔn)的,所以計(jì)算n時(shí)區(qū)當(dāng)天開始時(shí)間,需要加上n * 3600,最后計(jì)算到天數(shù)后還需要減去n * 3600
function getLocalDaySecord(time, timezone) {
const day = Math.floor((time + timezone * 3600) / (24 * 3600));
const sec = day * 24 * 3600 - timezone * 3600;
return sec;
}
獲取某個時(shí)區(qū)的日期: 20200101010101
const TIMEZONE = -new Date().getTimezoneOffset() / 60; //本地時(shí)區(qū)
function getLocalDateString(time, timezone) {
let offset = 0;
if (timezone !== undefined) {
offset = (timezone - TIMEZONE) * 3600 * 1000;
}
if (time === undefined) {
time = Date.now();
}
const date = new Date(time + offset);
const year = date.getFullYear(); //年
const month = date.getMonth() + 1; //天
const day = date.getDate(); //day-of-the-month
// var days = date.getDay(); //day-of-the-weak
const hours = date.getHours(); //小時(shí)
const minutes = date.getMinutes(); //分鐘
const seconds = date.getSeconds(); //秒
//const ms = date.getMilliseconds();//毫秒
const d1 = year * 10000 + month * 100 + day;
const d2 = hours * 10000 + minutes * 100 + seconds;
return d1 + '' + d2;
};