JSはタイムスタンプを先ほど、N分前、今日は何時何分、昨日は何時何分などの表示に変えますか?
3710 ワード
方法1:
Javascript言語を使って、タイムスタンプを新浪微博のような時間の表示方法に変換します.要求変換規則:1分以内に表示されています.N分前当日以内に表示されています.今日はN点N分(例えば、22:33)昨日の時間は昨日のN点N分(例えば、昨日の10:15)の年以内はN月N日N点N分(例えば、02月03日09:33)今年以前に表示されました.N年N月N日N点N分(例:2000年09月18日15:59)
カスタム変換関数:
用法の展示:
新浪微博のトップページで見ると、各ミニブログの後に表示される時間は標準的な年-月-日の形式ではなく、換算の時間差です.例えば、5分前に発表された「2時間前」は、標準的な時間表示形式よりも直感的で人間的なものらしいです.このような機能を実現するには、JSを使えばいいです.
Javascript言語を使って、タイムスタンプを新浪微博のような時間の表示方法に変換します.要求変換規則:1分以内に表示されています.N分前当日以内に表示されています.今日はN点N分(例えば、22:33)昨日の時間は昨日のN点N分(例えば、昨日の10:15)の年以内はN月N日N点N分(例えば、02月03日09:33)今年以前に表示されました.N年N月N日N点N分(例:2000年09月18日15:59)
カスタム変換関数:
function timestampFormat( timestamp ) {
function zeroize( num ) {
return (String(num).length == 1 ? '0' : '') + num;
}
var curTimestamp = parseInt(new Date().getTime() / 1000); //
var timestampDiff = curTimestamp - timestamp; //
var curDate = new Date( curTimestamp * 1000 ); //
var tmDate = new Date( timestamp * 1000 ); //
var Y = tmDate.getFullYear(), m = tmDate.getMonth() + 1, d = tmDate.getDate();
var H = tmDate.getHours(), i = tmDate.getMinutes(), s = tmDate.getSeconds();
if ( timestampDiff < 60 ) { //
return " ";
} else if( timestampDiff < 3600 ) { //
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 ); //
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);
}
}
}
パラメータの時間は現在の時間より大きくしてはいけません.現在の時間より大きいと「ただいま」に戻ります.用法の展示:
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
方法2新浪微博のトップページで見ると、各ミニブログの後に表示される時間は標準的な年-月-日の形式ではなく、換算の時間差です.例えば、5分前に発表された「2時間前」は、標準的な時間表示形式よりも直感的で人間的なものらしいです.このような機能を実現するには、JSを使えばいいです.
//JavaScript :
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(" !");
}
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=" " + parseInt(monthC) + " ";
}
else if(weekC>=1){
result=" " + parseInt(weekC) + " ";
}
else if(dayC>=1){
result=" "+ parseInt(dayC) +" ";
}
else if(hourC>=1){
result=" "+ parseInt(hourC) +" ";
}
else if(minC>=1){
result=" "+ parseInt(minC) +" ";
}else
result=" ";
return result;
}
タイムスタンプではなく、以下のJavaScript関数を使って文字列をタイムスタンプに変換できます.この関数の機能はJS版のsttotimeに相当します.//js :
function getDateTimeStamp(dateStr){
return Date.parse(dateStr.replace(/-/gi,"/"));
}