早速、コードに進みましょう。
PHP FOR Smarty
コードをコピー コードは次のとおりです:
* 名前: time_ago
* 目的:時刻を変更します 現在時刻をスタンプで表現しています
* 1分以内は秒単位で表示
* 1時間以内は分単位で表示
* 1日以内は時分単位で表示
* 表示昨日と一昨日で 3 日以内
* 3 日を超える場合は特定の日付を表示
*
* @author Peter Pan
* @param int $time input int
*/
関数 Smarty_modifier_time_ago($time) {
$ time_deff = time() - $time;
$retrun = '';
if ($time_deff >= 259200) {
$retrun = date('Y-m-d H:i', $time);
} else if ($time_deff >= 172800) {
$retrun = "一昨日" . $time);
} else if ($time_deff >= 86400 ) {
$retrun = "昨日" . date('H:i', $time); else if ($time_deff) >= 3600) {
$hour = intval($time_deff / 3600);
$ minutes = intval(($time_deff % 3600) / 60); ;
if ($分 > 0) {
$ retrun .= $分 '
}
$retrun .= '前'; time_deff >= 60) {
$ minutes = intval($time_deff / 60);
$retrun = $ minutes .
if ( $秒 > 0) {
$retrun .= '秒';
$retrun .= '前';
$retrun = $time_deff .'秒前';
}
return $retrun;
}
JavaScript
JS は、
を実装するために 3 つの関数に分かれています。
/*** 文字列パディング* @param string str パディングする文字列* @param int len ターゲット文字列長
* @param str chr パディングに使用される文字のデフォルトはスペースです* @param str dir は位置を左|右|両方ともデフォルトで右に埋めます
*/
function strPad(str, len, chr, dir){
str = str.toString();
len = ( typeof len == 'number') len : 0;
chr = (typeof chr == 'string') ? chr : ' ';
dir = (/left|right|both/i).test (dir) : 'right';
varrepeat = function(c, l) {
varrepeat = '';
while (repeat.length
return stop.substr(0, l); = len - str.length;
if (diff > 0) {
switch (dir) {
case 'left':
str = ''repeat(chr, diff) str; 🎜>break;
case 'both':
varhalf =repeat(chr, Math.ceil(diff / 2));
str = (half strhalf).substr(1, len);
break;
デフォルト:
str = '' strrepeat(chr, diff);
}
}
return
}
/**
* 日付の形式
* php Date 関数と同様に、Unix タイムスタンプ (第 2 レベル) を渡し、指定された形式を返します
* 形式 (大文字と小文字は区別されません):
* y は 4 を表します-数字の年
* m は 2 桁の月を表します
* d は 2 桁の日を表します
* h は 2 桁の時を表します
* i は 2 桁の分を表します
※sは2桁の秒を表します
*/
function formatDate(format,timestamp) {
var date = new Date(parseInt(timestamp) * 1000);
var year = date.getFull Year(); date.getMonth();
var 日 = date.getDate();
var 分 = date.getMinutes();
var 秒 = 日付。 getSeconds();
月 = strPad(月,2,'0','左' );
日 = strPad(日,'0','左'); (時,2,'0','左');
分 = strPad(分,2,'0','左');
秒 = strPad(秒,2,'0',' left');
format = format.replace(/y/gi,year);
format = format.replace(/d/) gi,day);
format = format.replace(/h/gi,hour);
format = format.replace(/s) /gi,秒);
戻り値;
}
関数 timeAgo( time) {
var nowTime = Date.parse(new Date()) / 1000; - 時間;
retrun = '';
if (time_deff >= 259200) {
retrun = formatDate('Y-m-d H:i', time); else if (time_deff >) = 172800) {
retrun = "昨日" formatDate('H:i', time) ;
} else if (time_deff >= 86400) {
retrun = "昨日" formatDate( 'H:i', time);
} else if (time_deff >= 3600) {
hour = parseInt(time_deff / 3600);
minutes = parseInt((time_deff % 3600) / 60) ;
retrun = 時 '時';
if (分 > 0) {
戻り値 '分';
戻り値 '前'; if (time_deff >= 60) {
分 = parseInt($time_deff / 60);
秒 = 分 '分'
if (秒 > 0) ) {
retrun = '秒';
}
retrun = '前';
}else{
retrun = time_deff '秒前'
}
return戻り値;
}