1. 程式人生 > 實用技巧 >js 時間戳轉為日期格式

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 vardateDiff =function(timestamp) { // 補全為13位 vararrTimestamp = (timestamp +'').split(''); for(varstart = 0; start < 13; start++) { if(!arrTimestamp[start]) { arrTimestamp[start] ='0'; } } timestamp = arrTimestamp.join('') * 1; varminute = 1000 * 60; varhour = minute * 60; varday = hour * 24; varhalfamonth = day * 15; varmonth = day * 30; varnow =newDate().getTime(); vardiffValue = now - timestamp; // 如果本地時間反而小於變數時間 if(diffValue < 0) { return'不久前'; } // 計算差異時間的量級 varmonthC = diffValue / month; varweekC = diffValue / (7 * day); vardayC = diffValue / day; varhourC = diffValue / hour; varminC = diffValue / minute; // 數值補0方法 varzero =function(value) { if(value < 10) { return'0'+ value; } returnvalue; }; // 使用 if(monthC > 12) { // 超過1年,直接顯示年月日 return(function() { vardate =newDate(timestamp); returndate.getFullYear() +'年'+ zero(date.getMonth() + 1) +'月'+ zero(date.getDate()) +'日'; })(); }elseif(monthC >= 1) { returnparseInt(monthC) +"月前"; }elseif(weekC >= 1) { returnparseInt(weekC) +"周前"; }elseif(dayC >= 1) { returnparseInt(dayC) +"天前"; }elseif(hourC >= 1) { returnparseInt(hourC) +"小時前"; }elseif(minC >= 1) { returnparseInt(minC) +"分鐘前"; } return'剛剛'; };