renovations
This commit is contained in:
parent
4b8b168fd2
commit
c7d4c7e3ff
172 changed files with 869 additions and 244 deletions
|
@ -0,0 +1,34 @@
|
|||
function formatDate(date) {
|
||||
var diff = new Date() - date; // разница в миллисекундах
|
||||
|
||||
if (diff < 1000) { // прошло менее 1 секунды
|
||||
return 'только что';
|
||||
}
|
||||
|
||||
var sec = Math.floor( diff / 1000 ); // округлить diff до секунд
|
||||
|
||||
if (sec < 60) {
|
||||
return sec + ' сек. назад';
|
||||
}
|
||||
|
||||
var min = Math.floor( diff / 60000 ); // округлить diff до минут
|
||||
if (min < 60) {
|
||||
return min + ' мин. назад';
|
||||
}
|
||||
|
||||
// форматировать дату, с учетом того, что месяцы начинаются с 0
|
||||
var d = date;
|
||||
d = [
|
||||
'0'+d.getDate(),
|
||||
'0'+(d.getMonth()+1),
|
||||
''+d.getFullYear(),
|
||||
'0'+d.getHours(),
|
||||
'0'+d.getMinutes()
|
||||
];
|
||||
|
||||
for(var i=0; i<d.length; i++) {
|
||||
d[i] = d[i].slice(-2);
|
||||
}
|
||||
|
||||
return d.slice(0,3).join('.')+' '+d.slice(3).join(':');
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
describe("formatDate", function() {
|
||||
it("выводит дату 1мс назад как \"только что\"", function() {
|
||||
assert.equal( formatDate( new Date(new Date - 1) ), 'только что' );
|
||||
});
|
||||
|
||||
it('выводит дату "30 сек назад"', function() {
|
||||
assert.equal( formatDate( new Date( new Date - 30*1000) ), "30 сек. назад" );
|
||||
});
|
||||
|
||||
it('выводит дату "5 мин назад"', function() {
|
||||
assert.equal( formatDate( new Date( new Date- 5*60*1000) ), "5 мин. назад");
|
||||
});
|
||||
|
||||
it("выводит старую дату в формате дд.мм.гг чч:мм", function() {
|
||||
assert.equal( formatDate( new Date(2014, 2, 1, 11, 22, 33) ), "01.03.14 11:22" );
|
||||
});
|
||||
|
||||
});
|
|
@ -0,0 +1,48 @@
|
|||
Для того, чтобы узнать время от `date` до текущего момента - используем вычитание дат.
|
||||
|
||||
```js
|
||||
//+ run
|
||||
function formatDate(date) {
|
||||
var diff = new Date() - date; // разница в миллисекундах
|
||||
|
||||
if (diff < 1000) { // прошло менее 1 секунды
|
||||
return 'только что';
|
||||
}
|
||||
|
||||
var sec = Math.floor( diff / 1000 ); // округлить diff до секунд
|
||||
|
||||
if (sec < 60) {
|
||||
return sec + ' сек. назад';
|
||||
}
|
||||
|
||||
var min = Math.floor( diff / 60000 ); // округлить diff до минут
|
||||
if (min < 60) {
|
||||
return min + ' мин. назад';
|
||||
}
|
||||
|
||||
// форматировать дату, с учетом того, что месяцы начинаются с 0
|
||||
var d = date;
|
||||
d = [
|
||||
'0'+d.getDate(),
|
||||
'0'+(d.getMonth()+1),
|
||||
''+d.getFullYear(),
|
||||
'0'+d.getHours(),
|
||||
'0'+d.getMinutes()
|
||||
];
|
||||
|
||||
for(var i=0; i<d.length; i++) {
|
||||
d[i] = d[i].slice(-2);
|
||||
}
|
||||
|
||||
return d.slice(0,3).join('.')+' '+d.slice(3).join(':');
|
||||
}
|
||||
|
||||
alert( formatDate( new Date( new Date - 1) ) ); // только что
|
||||
|
||||
alert( formatDate( new Date( new Date - 30*1000) ) ); // 30 сек. назад
|
||||
|
||||
alert( formatDate( new Date( new Date- 5*60*1000) ) ); // 5 мин. назад
|
||||
|
||||
alert( formatDate( new Date( new Date - 86400*1000) ) ); // вчерашняя дата в формате "дд.мм.гг чч:мм"
|
||||
```
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
# Относительное форматирование даты
|
||||
|
||||
[importance 4]
|
||||
|
||||
Напишите функцию `formatDate(date)`, которая форматирует дату `date` так:
|
||||
<ul>
|
||||
<li>Если со времени `date` прошло менее секунды, то возвращает `"только что"`.</li>
|
||||
<li>Иначе если со времени `date` прошло менее минуты, то `"n сек. назад"`.</li>
|
||||
<li>Иначе если прошло меньше часа, то `"m мин. назад"`.</li>
|
||||
<li>Иначе полная дата в формате `"дд.мм.гг чч:мм"`.</li>
|
||||
</ul>
|
||||
|
||||
Например:
|
||||
|
||||
```js
|
||||
function formatDate(date) { /* ваш код */ }
|
||||
|
||||
alert( formatDate( new Date(new Date - 1) ) ); // "только что"
|
||||
|
||||
alert( formatDate( new Date(new Date - 30*1000) ) ); // "30 сек. назад"
|
||||
|
||||
alert( formatDate( new Date(new Date- 5*60*1000) ) ); // "5 мин. назад"
|
||||
|
||||
alert( formatDate( new Date(new Date - 86400*1000) ) ); // вчерашняя дата в формате "дд.мм.гг чч:мм"
|
||||
```
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue