|
|
|
| Всем привет. Имею дату обновления товара. Если товар обновлен сегодня, то пишем "обновлен сегодня", если вчера - "обновлен вчера", а если обновлен 2 дня назад, то тут уже просто выводим дату. Я вроде как бы сделал, но начал проверять, неверно. Прошу помощи в реализации. Спасибо.
$math_date = round((time()-strtotime($res2['result']['em_produce_data_upd'][$g]))/86400);
if($math_date == 0){
$vdate = 'сегодня';
}else if($math_date == 1){
$vdate = 'вчера';
}else{
$vdate = date('d.m.y',strtotime($res2['result']['em_produce_data_upd'][$g]));
}
|
| |
|
|
|
|
|
|
|
для: TetRiska
(09.07.2013 в 15:24)
| | Можно так например
<?php
function relative_date($t) {
$t = strtotime($t);
$reldays = round(($t - time()) / 86400);
switch ($reldays) {
case 1:
return 'Завтра';
case 0:
return 'Сегодня';
case -1:
return 'Вчера';
default:
return date('m.d.Y', $t);
}
}
// использование
echo relative_date("2013-07-08 11:22:47");
|
| |
|
|
|
|
|
|
|
для: DangerBay
(09.07.2013 в 16:52)
| | опробую отпишу, но с "Завтра" вы погорячились :) товар не может быть обновлен на день вперед
П.С. работает не верно, я поставил 2013-07-09 00:00:00 написало "вчера", а это уже "сегодня" | |
|
|
|
|
|
|
|
для: TetRiska
(09.07.2013 в 17:18)
| | Ага, округление неверно. Так вроде правильней будет.
<?php
function relative_date($t) {
$t = strtotime($t);
$reldays = ceil(($t - time()) / 86400);
switch ($reldays) {
case 0:
return 'Сегодня';
case -1:
return 'Вчера';
case -2:
return '2 дня назад';
default:
return date('m.d.Y', $t);
}
}
echo relative_date("2013-07-09 00:00:00");
|
| |
|
|
|
|
|
|
|
для: DangerBay
(09.07.2013 в 17:38)
| | 2013-07-08 23:59:59 - пишет сегодня (( а это "вчера" | |
|
|
|
|
|
|
|
для: TetRiska
(09.07.2013 в 17:50)
| | Должно так работать, если ещё нужно
<?php
function relative_date($t) {
$t = strtotime($t);
$reldays = ($t - strtotime(date('D'))) / 86400;
if ($reldays >= 0 && $reldays < 1)
return 'Сегодня';
else if ($reldays >= -1 && $reldays < 0)
return 'Вчера';
else
return date('m.d.Y', $t);
}
echo relative_date("2013-07-09 00:00:00");
|
| |
|
|
|
|
|
|
|
для: DangerBay
(09.07.2013 в 19:33)
| | работает, спасибо | |
|
|
|
|
|
|
|
для: TetRiska
(09.07.2013 в 15:24)
| | >round((time()-strtotime($res2['result']['em_produce_data_upd'][$g]))/86400)
DateTime::diff, date_diff | |
|
|
|
|
|
|
|
для: confirm
(09.07.2013 в 17:55)
| | можно пример, начал пробовать, фигню мне выдает | |
|
|
|
|
|
|
|
|
для: TetRiska
(09.07.2013 в 15:24)
| | Если данные берутся из БД, то в запросе добавляем к столбцам
TO_DAYS( NOW( ) ) - TO_DAYS( date_update ) AS interval_days
| где date_update - название столбца, содержащего даты обновления записи. Элемент ассоциативного результирующего массива interval_days будет содержать количество дней, прошедшее с момента обновления. А далее Ваша проверка:
if($arr[interval_days] == 0){
$vdate = 'сегодня';
}else if($arr[interval_days] == 1){
$vdate = 'вчера';
}else{
$vdate = date('d.m.y',strtotime($res2['result']['em_produce_data_upd'][$g]));
}
|
| |
|
|
|
|
|
|
|
для: Rolex
(09.07.2013 в 17:59)
| | дата обновления из бд берется
куда в запрос вставить?
$sql2 = "
SELECT a.`em_produce_id`,
a.`em_produce_name`,
a.`em_produce_data_upd`
FROM `em_produce`
";
$res2 = select_query($sql2);
|
| |
|
|
|
|
|
|
|
для: TetRiska
(09.07.2013 в 18:12)
| | В любом месте после SELECT
DATEDIFF(NOW(), date_field)
или IF(DATEDIFF(NOW(), date_field), express, express)
и т.п. | |
|
|
|
|
|
|
|
для: confirm
(09.07.2013 в 18:22)
| | спасибо, как вариант попробую | |
|
|
|
|
|
|
|
для: Rolex
(09.07.2013 в 17:59)
| | спасибо | |
|
|
|