|
Разность дат
|
|
| Denisгггг | Дата: 05 Августа 2010, 16:02 | Сообщение # 1 | ● ● ● ● ● 232 сообщения Статус: Offline | Помогите пожалуйста определить разность дат. Дни расчитать еще получается, а вот часы, минуты получается если только разность дать меньше одного дня, а если больше - ни в какую Code timeFrom = new Date($_LOG_TIMESTAMP$*1000); timeNow = new Date().getTime(); diff = timeNow - timeFrom; second = diff / (1000); minutes = timeFrom.getMinutes(); hours = Math.floor(second/3600); days = Math.floor(second / (86400)); sec = Math.floor(second-(minutes*60)-(hours*3600)); Добавлено (05 Август 2010, 16:02) --------------------------------------------- Прошу прощения... уже не надо, полазил тут, нашел в своей же старой теме общение cucYa и kubik-rubik и вот такое: Code function lol (x) { var a = new Date(x), b = (((new Date()).getTime() - a.getTime()) / 1000), c = Math.floor(b / 86400); if (!isNaN(c) || !c < 0 || !c >= 31) { return c == 0 && (b < 60 && 'пару секунд назад' || b < 120 && '1 минуту назад' || b < 3600 && Math.floor(b / 60) + ' минут назад' || b < 7200 && '1 час назад' || b < 86400 && Math.floor(b / 3600) + ' часов назад') || c == 1 && 'вчера' || c < 7 && c + ' дней назад' || c < 31 && Math.ceil(c / 7) + ' недель назад' || c < 365 && Math.ceil(c / 31) + ' месяца назад'; } }; Спасибо, cucYa  | | |
|
| cucYa | Дата: 05 Августа 2010, 16:03 | Сообщение # 2 |  ● ● ● ● ● Совращенный мальчик.7317 сообщений Статус: Offline | Denisгггг, да, но код не идеален, я бы сказал, что он дерьмо. | | |
|
| Denisгггг | Дата: 05 Августа 2010, 16:07 | Сообщение # 3 | ● ● ● ● ● 232 сообщения Статус: Offline | cucYa, ну, пока буду довольствоваться этим... вроди и задачка то состоит из простых if'ов, простейших мат. действий да целочисленного деления, но всё равно путаюсь >_< | | |
|
| cucYa | Дата: 05 Августа 2010, 16:36 | Сообщение # 4 |  ● ● ● ● ● Совращенный мальчик.7317 сообщений Статус: Offline | new Date($_LOG_TIMESTAMP$*1000); Вернёт дату, а не время. | | |
|
| kubik-rubik | Дата: 05 Августа 2010, 19:33 | Сообщение # 5 |  ● ● ● ● ● 379 сообщений Статус: Offline | лучше делать на ю.пхп  | | |
|
| uWeb | Отредактировал uWeb - Четверг, 05 Августа 2010, 21:59 Дата: 05 Августа 2010, 21:58 | Сообщение # 6 | ● ● ● ● ● 1135 сообщений Статус: Offline | Кстати, на php случаем нет такой функции? * меня менты сегодня на 100 руб поставили :D | | |
|
| kanat07 | Дата: 05 Августа 2010, 22:06 | Сообщение # 7 |  ● ● ● ● ● 735 сообщений Статус: Offline | uWeb, какой? там вроде есть timestamp -> date | | |
|
| uWeb | Дата: 05 Августа 2010, 22:26 | Сообщение # 8 | ● ● ● ● ● 1135 сообщений Статус: Offline | У кого есть такая функция?Code 9 часов 30 минут назад На PHP. | | |
|
| kanat07 | Отредактировал kanat07 - Четверг, 05 Августа 2010, 23:01 Дата: 05 Августа 2010, 22:55 | Сообщение # 9 |  ● ● ● ● ● 735 сообщений Статус: Offline | я новичок в пхп, но что-то вроде такое Code [php]
function diffT($t) { $diff = time() - $t; if ($diff < 120) { return 'about a minute ago.'; } else if ($diff < (45 * 60)) { return floor($diff / 60) . ' minutes ago.'; } else if ($diff < (90 * 60)) { return 'about an hour ago.'; } else if ($diff < (24 * 60 * 60)) { return 'about ' . floor($diff / 3600) . ' hours ago.'; } else if ($diff < (48 * 60 * 60)) { return '1 day ago.'; } else if ($diff < (365 * 60 *60)) { return floor($diff / 86400) . ' days ago.'; } else { return floor( ($diff / 86400) / 366 ) . 'years ago'; } }
$a = 1281040206; $b = diffT($a);
echo $b; общее идея такова, нужно поиграться с else if | | |
|
| uWeb | Отредактировал uWeb - Четверг, 05 Августа 2010, 23:02 Дата: 05 Августа 2010, 23:01 | Сообщение # 10 | ● ● ● ● ● 1135 сообщений Статус: Offline | На русском сделать это посложнее. | | |
|
| kanat07 | Дата: 05 Августа 2010, 23:05 | Сообщение # 11 |  ● ● ● ● ● 735 сообщений Статус: Offline | я с русской аудиторией не работаю но, хотя можно что-то натварить с помощью fmod, нет? | | |
|