方法一:
使用Javascript語言,將時(shí)間戳轉(zhuǎn)換為類似新浪微博的時(shí)間的表示方法。
要求轉(zhuǎn)換規(guī)則:
1分鐘以內(nèi)顯示為:剛剛
1小時(shí)以內(nèi)顯示為:N分鐘前
當(dāng)天以內(nèi)顯示為:今天 N點(diǎn)N分(如:今天 22:33)
昨天時(shí)間顯示為:昨天 N點(diǎn)N分(如:昨天 10:15)
當(dāng)年以內(nèi)顯示為:N月N日 N點(diǎn)N分(如:02月03日 09:33)
今年以前顯示為:N年N月N日 N點(diǎn)N分(如:2000年09月18日 15:59)
自定義的轉(zhuǎn)換函數(shù):
function timestampFormat( timestamp ) { function zeroize( num ) { return (String(num).length == 1 ? "0" : "") + num; } var curTimestamp = parseInt(new Date().getTime() / 1000); //當(dāng)前時(shí)間戳 var timestampDiff = curTimestamp - timestamp; // 參數(shù)時(shí)間戳與當(dāng)前時(shí)間戳相差秒數(shù) var curDate = new Date( curTimestamp * 1000 ); // 當(dāng)前時(shí)間日期對(duì)象 var tmDate = new Date( timestamp * 1000 ); // 參數(shù)時(shí)間戳轉(zhuǎn)換成的日期對(duì)象 var Y = tmDate.getFullYear(), m = tmDate.getMonth() + 1, d = tmDate.getDate(); var H = tmDate.getHours(), i = tmDate.getMinutes(), s = tmDate.getSeconds(); if ( timestampDiff < 60 ) { // 一分鐘以內(nèi) return "剛剛"; } else if( timestampDiff < 3600 ) { // 一小時(shí)前之內(nèi) return Math.floor( timestampDiff / 60 ) + "分鐘前"; } else if ( curDate.getFullYear() == Y && curDate.getMonth()+1 == m && curDate.getDate() == d ) { return "今天" + zeroize(H) + ":" + zeroize(i); } else { var newDate = new Date( (curTimestamp - 86400) * 1000 ); // 參數(shù)中的時(shí)間戳加一天轉(zhuǎn)換成的日期對(duì)象 if ( newDate.getFullYear() == Y && newDate.getMonth()+1 == m && newDate.getDate() == d ) { return "昨天" + zeroize(H) + ":" + zeroize(i); } else if ( curDate.getFullYear() == Y ) { return zeroize(m) + "月" + zeroize(d) + "日 " + zeroize(H) + ":" + zeroize(i); } else { return Y + "年" + zeroize(m) + "月" + zeroize(d) + "日 " + zeroize(H) + ":" + zeroize(i); } } }
參數(shù)的時(shí)間不能大于當(dāng)前時(shí)間,大于當(dāng)前時(shí)間會(huì)返回“剛剛”。
用法展示:
timestampFormat(1326170770); //2012年01月10日 12:46 timestampFormat(Date.parse("2016-10-11 15:26:10")/1000); //剛剛 timestampFormat(Date.parse("2016-10-11 15:10:10")/1000); //16分鐘前 timestampFormat(Date.parse("2016-10-11 10:10:10")/1000); //今天10:10 timestampFormat(Date.parse("2016-10-10 10:10:10")/1000); //昨天10:10 timestampFormat(Date.parse("2016-02-10 10:10:10")/1000); //02月10日 10:10 timestampFormat(Date.parse("2012-10-10 10:10:10")/1000); //2012年10月10日 10:10方法二
在新浪微博首頁看到每條微博后邊顯示的時(shí)間并不是標(biāo)準(zhǔn)的年-月-日格式,而是經(jīng)過換算的時(shí)間差,如:發(fā)表于5分鐘前、發(fā)表于“2小時(shí)前”,比起標(biāo)準(zhǔn)的時(shí)間顯示格式,貌似更加直觀和人性化。要實(shí)現(xiàn)類似功能,用JS就可以,實(shí)現(xiàn)方法如下:
//JavaScript函數(shù): var minute = 1000 * 60; var hour = minute * 60; var day = hour * 24; var halfamonth = day * 15; var month = day * 30; function getDateDiff(dateTimeStamp){ var now = new Date().getTime(); var diffValue = now - dateTimeStamp; if(diffValue < 0){ //若日期不符則彈出窗口告之 //alert("結(jié)束日期不能小于開始日期!"); } var monthC =diffValue/month; var weekC =diffValue/(7*day); var dayC =diffValue/day; var hourC =diffValue/hour; var minC =diffValue/minute; if(monthC>=1){ result="發(fā)表于" + parseInt(monthC) + "個(gè)月前"; } else if(weekC>=1){ result="發(fā)表于" + parseInt(weekC) + "周前"; } else if(dayC>=1){ result="發(fā)表于"+ parseInt(dayC) +"天前"; } else if(hourC>=1){ result="發(fā)表于"+ parseInt(hourC) +"個(gè)小時(shí)前"; } else if(minC>=1){ result="發(fā)表于"+ parseInt(minC) +"分鐘前"; }else result="剛剛發(fā)表"; return result; }
若你得到的時(shí)間格式不是時(shí)間戳,可以使用下面的JavaScript函數(shù)把字符串轉(zhuǎn)換為時(shí)間戳, 本函數(shù)的功能相當(dāng)于JS版的strtotime:
//js函數(shù)代碼:字符串轉(zhuǎn)換為時(shí)間戳 function getDateTimeStamp(dateStr){ return Date.parse(dateStr.replace(/-/gi,"/")); }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/94853.html
摘要:經(jīng)常在朋友圈,空間微博上看到動(dòng)態(tài)的發(fā)布時(shí)間評(píng)論時(shí)間,都顯示,昨天,前天,幾天前,比起直接顯示幾月幾日幾分幾秒要優(yōu)雅的多。獲取已經(jīng)過了多久時(shí)間轉(zhuǎn)換剛剛幾分鐘前幾小時(shí)前今天昨天前天幾天前時(shí)間戳今天最大時(shí)間剛剛分鐘前小時(shí)前今天昨天前天天前原文 經(jīng)常在朋友圈,QQ空間、微博上看到動(dòng)態(tài)的發(fā)布時(shí)間、評(píng)論時(shí)間,都顯示,昨天,前天,幾天前,比起直接顯示幾月幾日幾分幾秒要優(yōu)雅的多。 于是自己的項(xiàng)目也想采...
摘要:袁鳴把價(jià)格數(shù)量一一進(jìn)行記錄,做了質(zhì)檢記錄合格后辦理了入庫放入冰箱。但這回家宴與上次的家宴有什么不一樣嗎袁鳴首先把做每道菜的整個(gè)過程,用什么資源物料多長時(shí)間邏輯關(guān)系等等都分別錄入到模塊中。 此文已由作者王攀授權(quán)網(wǎng)易云社區(qū)發(fā)布。 歡迎訪問網(wǎng)易云社區(qū),了解更多網(wǎng)易技術(shù)產(chǎn)品運(yùn)營經(jīng)驗(yàn)。 引言: 目前我們團(tuán)隊(duì)在做的供應(yīng)鏈協(xié)同決策系統(tǒng)(簡稱河洛,取河洛交匯,河圖洛書之意),定位相當(dāng)于一個(gè)計(jì)劃、控制與...
摘要:前后經(jīng)過九個(gè)月,我翻譯的官方版本中文文檔可以發(fā)布第一個(gè)較為完整的版本了。這點(diǎn)原本是最重要的,但讓位于符合中文習(xí)慣,是因?yàn)槿绻g本有機(jī)翻痕跡,給人的品質(zhì)感和可信度就降低了更準(zhǔn)確和更優(yōu)雅的翻譯風(fēng)格。 showImg(/img/remote/1460000006773992); 前后經(jīng)過九個(gè)月,我翻譯的Spring MVC官方4.2.4版本中文文檔可以發(fā)布第一個(gè)較為完整的版本了。譯文上盡量做...
摘要:今天在此向大家推薦一種非常流行的版本號(hào)命名規(guī)則語義化版本。語義化版本約定修訂版本號(hào)代表在和之前接口不變的前提下修正了。就是專門用于語義化版本號(hào)檢查的庫,其也是語義化版本標(biāo)準(zhǔn)的制定者。 NPM酷庫,每天兩分鐘,了解一個(gè)流行NPM庫。 軟件的命運(yùn)就是不斷維護(hù)、更新、迭代,所以我們用版本號(hào)來區(qū)分一個(gè)軟件的不同時(shí)期和形態(tài),版本號(hào)的命名方式有各種各樣,有的以小數(shù)表示(幾點(diǎn)幾),有的以日期表示,有...
摘要:相信,幾乎每個(gè)前端項(xiàng)目都不可避免地要接觸到時(shí)間處理,最最常見的就是時(shí)間格式化。中,內(nèi)置對(duì)象封裝了時(shí)間處理方法。 相信,幾乎每個(gè)前端項(xiàng)目都不可避免地要接觸到時(shí)間處理,最最常見的就是時(shí)間格式化。JS中,內(nèi)置對(duì)象Date封裝了時(shí)間處理方法。但說實(shí)話,這個(gè)對(duì)象方法太多,而且平時(shí)業(yè)務(wù)開發(fā)中也很少會(huì)直接用到這些方法,所以我總是對(duì)Date對(duì)象感覺到陌生!最近對(duì)時(shí)間處理作了下小結(jié),用此文來記錄一下。 ...
閱讀 1581·2021-11-25 09:43
閱讀 2486·2019-08-30 15:54
閱讀 2950·2019-08-30 15:53
閱讀 1099·2019-08-30 15:53
閱讀 757·2019-08-30 15:52
閱讀 2545·2019-08-26 13:36
閱讀 818·2019-08-26 12:16
閱讀 1220·2019-08-26 12:13