js 時間戳轉為日期格式
js 時間戳轉為日期格式
什麼是Unix時間戳(Unix timestamp): Unix時間戳(Unix timestamp),或稱Unix時間(Unix time)、POSIX時間(POSIX time),是一種時間表示方式,定義為從格林威治時間1970年01月01日00時00分00秒起至現在的總秒數。Unix時間戳不僅被使用在Unix系統、類Unix系統中,也在許多其他作業系統中被廣泛採用。
目前相當一部分作業系統使用32位二進位制數字表示時間。此類系統的Unix時間戳最多可以使用到格林威治時間2038年01月19日03時14分07秒(二進位制:01111111 11111111 11111111 11111111)。其後一秒,二進位制數字會變為10000000 00000000 00000000 00000000,發生溢位錯誤,造成系統將時間誤解為1901年12月13日20時45分52秒。這很可能會引起軟體故障,甚至是系統癱瘓。使用64位二進位制數字表示時間的系統(最多可以使用到格林威治時間292,277,026,596年12月04日15時30分08秒)則基本不會遇到這類溢位問題。
一.js將時間轉換成時間戳
1.js獲取當前時間戳的方法
var timestamp1 = Date.parse(new Date());
var timestamp2 = (new Date()).valueOf();
var timestamp3 = new Date().getTime();
第一種:獲取的時間戳是把毫秒改成000顯示,第二種和第三種是獲取了當前毫秒的時間戳。
2.js獲取制定時間戳的方法
var oldTime = (new Date("2015/06/23 08:00:20")).getTime()/1000;
getTime()返回數值的單位是毫秒。
二.js把時間戳轉為為普通日期格式
1.Date toLocaleString方法
function getLocalTime(nS) { return new Date(parseInt(nS) * 1000).toLocaleString().replace(/:\d{1,2}$/,' '); }
parseInt() 函式可解析一個字串,並返回一個整數。
js中時間操作單位是毫秒。
toLocaleString() 方法可根據本地時間把 Date 物件轉換為字串,並返回結果。
replace() 方法用於在字串中用一些字元替換另一些字元,或替換一個與正則表示式匹配的子串。
replace(/:\d{1,2}$/,' ')驗證替換以:開始有一位或二位數字的結束字串,就是秒;替換為空
顯示如下:
所以我們可以利用正則表示式改變我們想要的日期格式。
2.Date 屬性方法
function add0(m){return m<10?'0'+m:m } function format(shijianchuo) { //shijianchuo是整數,否則要parseInt轉換 var time = new Date(shijianchuo); var y = time.getFullYear(); var m = time.getMonth()+1; var d = time.getDate(); var h = time.getHours(); var mm = time.getMinutes(); var s = time.getSeconds(); return y+'-'+add0(m)+'-'+add0(d)+' '+add0(h)+':'+add0(mm)+':'+add0(s); }
三.大神張鑫旭
https://www.zhangxinxu.com/php/microCodeDetail?id=10
/*
** 時間戳轉換成指定格式日期
** eg.
** dateFormat(11111111111111, 'Y年m月d日 H時i分')
** → "2322年02月06日 03時45分"
*/
var dateFormat = function (timestamp, formats) {
// formats格式包括
// 1. Y-m-d
// 2. Y-m-d H:i:s
// 3. Y年m月d日
// 4. Y年m月d日 H時i分
formats = formats || 'Y-m-d';
var zero = function (value) {
if (value < 10) {
return '0' + value;
}
return value;
};
var myDate = timestamp? new Date(timestamp): new Date();
var year = myDate.getFullYear();
var month = zero(myDate.getMonth() + 1);
var day = zero(myDate.getDate());
var hour = zero(myDate.getHours());
var minite = zero(myDate.getMinutes());
var second = zero(myDate.getSeconds());
return formats.replace(/Y|m|d|H|i|s/ig, function (matches) {
return ({
Y: year,
m: month,
d: day,
H: hour,
i: minite,
s: second
})[matches];
});
};
-------------------------------------------------------------------------------------------------------------------------------------
https://www.zhangxinxu.com/php/microCodeDetail?id=11
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
var dateDiff = function (timestamp) {
// 補全為13位
var arrTimestamp = (timestamp + '' ).split( '' );
for ( var start = 0; start < 13; start++) {
if (!arrTimestamp[start]) {
arrTimestamp[start] = '0' ;
}
}
timestamp = arrTimestamp.join( '' ) * 1;
var minute = 1000 * 60;
var hour = minute * 60;
var day = hour * 24;
var halfamonth = day * 15;
var month = day * 30;
var now = new Date().getTime();
var diffValue = now - timestamp;
// 如果本地時間反而小於變數時間
if (diffValue < 0) {
return '不久前' ;
}
// 計算差異時間的量級
var monthC = diffValue / month;
var weekC = diffValue / (7 * day);
var dayC = diffValue / day;
var hourC = diffValue / hour;
var minC = diffValue / minute;
// 數值補0方法
var zero = function (value) {
if (value < 10) {
return '0' + value;
}
return value;
};
// 使用
if (monthC > 12) {
// 超過1年,直接顯示年月日
return ( function () {
var date = new Date(timestamp);
return date.getFullYear() + '年' + zero(date.getMonth() + 1) + '月' + zero(date.getDate()) + '日' ;
})();
} else if (monthC >= 1) {
return parseInt(monthC) + "月前" ;
} else if (weekC >= 1) {
return parseInt(weekC) + "周前" ;
} else if (dayC >= 1) {
return parseInt(dayC) + "天前" ;
} else if (hourC >= 1) {
return parseInt(hourC) + "小時前" ;
} else if (minC >= 1) {
return parseInt(minC) + "分鐘前" ;
}
return '剛剛' ;
};
|