ВКонтакте дата отображается статично только для позавчерашних новостей, а если пост добавлен сегодня, то отображается отсчет от времени добавления (5 минуты назад, час назад, 3 часа назад и т.д.). Скрипт ниже позволит добиться аналогичного вывода даты и времени.
На самом деле, к нам в редакцию поступил простой скрипт, который отображает отсчет от даты вместо даты добавления. Ну, вот я подумал, что лучше будет сделать вывод даты и времени как ВКонтакте. Все работает, но код может показаться большим.
Установка
В вид материалов новостей вместо $DATE$ вставьте следующий код:
Код
<?if($DATE$='Сегодня')?>
<span id="d$ID$"></span>
<script type="text/javascript">
function corrDate(t,n){return n!=0?" " + n + " " + t[n%10==1&&n%100!=11?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2] + ", ":"";};
(function(time){var everySecond=true,ar=arguments,_=Math.ceil((time-($TIMESTAMP$*1000))/(1000)),day,hour,min,sec,text=[['день', 'дня', 'дней'], ['час', 'часа', 'часов'], ['минуту', 'минуты', 'минут'], ['секунду', 'секунды', 'секунд']],res; day = Math.floor((_/86400)); _=_-(day*86400); hour = Math.floor((_/3600)); _=_-(hour*3600); min = Math.floor((_/60)); _=_-(min*60);
if(min>0) {if(min==1) {res='Минуту назад'} else {if(hour>0) {if(hour=='1') {res='Час назад'} else {res=corrDate(text[1],hour)}} else {res=corrDate(text[2],min)}}} else {res='Только что'}
document.getElementById("d$ID$").innerHTML=res.replace(/\,\s$/, " назад"); if (everySecond) {setTimeout(function(){ar.callee(new Date().getTime());},1000);}})(new Date().getTime());
</script>
<?else?>
$DATE$ в $TIME$
<?endif?>
Как только Вы добавили материал, в новости вместо даты будет надпись «только что». Дата на странице обновляется автоматически, через минуту будет написано, что новость создана «минуту назад» и т.д.