Помогите с конвертацией даты из php в UTM5....

Технические вопросы по UTM 5.0
Ответить
solomon
Сообщения: 316
Зарегистрирован: Вт мар 16, 2010 08:39

Помогите с конвертацией даты из php в UTM5....

Сообщение solomon »

Делаю скрипт выдирающий услуги пользователя за предыдущий месяц, уже глаз замылился
получаю в пхп начало предыдущего месяца и его конец

Код: Выделить всё

$lastmonth1 = mktime(0, 0, 0, date("m")-1, date("01"),date("Y"));
$lastmonth2 = mktime(0, 0, 0, date("m"), 1, date("Y"));

$res_service = mysql_query &#40;"SELECT discount, slink_id, discount_date, discount_period_id,account_id, services_data.service_name AS sname, services_data.service_type, charge_type, discount_with_tax FROM discount_transactions_all, services_data WHERE discount_transactions_all.account_id='$id' AND services_data.id=discount_transactions_all.service_id AND discount_date>='$lastmonth1' AND discount_date <='$lastmonth2' AND &#40;discount_transactions_all.service_type='2' OR discount_transactions_all.service_type='1' OR charge_type='1' OR charge_type='2'&#41; ORDER BY discount_date DESC", $link&#41;;
Выборка не происходит (((( не могу получить необходимую дату
Помогите плиз...

Аватара пользователя
Voronok
Сообщения: 116
Зарегистрирован: Пт мар 14, 2008 19:21

Сообщение Voronok »

Я делал так:

Код: Выделить всё

$d1 = "01.03.2010 00&#58;00&#58;00";
$d2 = "31.03.2010 23&#58;59&#58;59";

$sd1 = strtotime&#40;$d1&#41;;
$sd2 = strtotime&#40;$d2&#41;;
То есть, переводил дату в UNIX-формат. Полученную дату ($sd1, $sd2) использовал в запросе.

solomon
Сообщения: 316
Зарегистрирован: Вт мар 16, 2010 08:39

Сообщение solomon »

Voronok писал(а):Я делал так:

Код: Выделить всё

$d1 = "01.03.2010 00&#58;00&#58;00";
$d2 = "31.03.2010 23&#58;59&#58;59";

$sd1 = strtotime&#40;$d1&#41;;
$sd2 = strtotime&#40;$d2&#41;;
То есть, переводил дату в UNIX-формат. Полученную дату ($sd1, $sd2) использовал в запросе.
Спасибо за совет - воспользуюсь
А вот получить d1 && d2 автоматически - границы предыдущего месяца чтоб не вручную их вбивать каждый раз...

Аватара пользователя
Voronok
Сообщения: 116
Зарегистрирован: Пт мар 14, 2008 19:21

Сообщение Voronok »

Как-то так:

Код: Выделить всё

<?php
$curr_unixstamp = mktime&#40;&#41;;
$month = date&#40;"n", $curr_unixstamp&#41;;
$year = date&#40;"Y", $curr_unixstamp&#41;;
if &#40;$month == 1&#41; &#123;
        $month = 12;
        $year = $year - 1;
&#125; else &#123;
        $month = $month - 1;
&#125;
$last_day = date&#40;"t", mktime&#40;0,0,0,$month,1,$year&#41;&#41;;
$str_d1 = "1.$month.$year 00&#58;00&#58;00";
$str_d2 = "$last_day.$month.$year 23&#58;59&#58;59";
$d1 = strtotime&#40;$str_d1&#41;;
$d2 = strtotime&#40;$str_d2&#41;;
echo "$str_d1 - $str_d2\n";
echo "$d1 - $d2\n";
?>

solomon
Сообщения: 316
Зарегистрирован: Вт мар 16, 2010 08:39

Сообщение solomon »

А вот мое решение - вечером нарыл )))

Код: Выделить всё

$date = new DateTime&#40;&#41;; //создали новый элемент 
echo $date->format&#40; "d.m.Y H&#58;i&#58;s" &#41;; //получили текущую дату 
$date->modify&#40;"-1 month"&#41;; //отняли от тек даты один месяц - получили дату месяц назад 
echo "<br>"; 
$dt1 = $date->format&#40; "01.m.Y 00&#58;00&#58;00" &#41;; //привели к виду начала предыдущего месяца 
$dt2 = $date->format&#40; "t.m.Y 23&#58;59&#58;59" &#41;;  // привели к виду конца предыдущего месяца 

$st_date = strtotime&#40;$dt1&#41;; //перевели из строкового значения в unixtime 
$end_date = strtotime&#40;$dt2&#41;; //перевели из строкового значения в unixtime

Аватара пользователя
Voronok
Сообщения: 116
Зарегистрирован: Пт мар 14, 2008 19:21

Сообщение Voronok »

solomon писал(а):А вот мое решение - вечером нарыл )))

Код: Выделить всё

$date = new DateTime&#40;&#41;; //создали новый элемент 
echo $date->format&#40; "d.m.Y H&#58;i&#58;s" &#41;; //получили текущую дату 
$date->modify&#40;"-1 month"&#41;; //отняли от тек даты один месяц - получили дату месяц назад 
echo "<br>"; 
$dt1 = $date->format&#40; "01.m.Y 00&#58;00&#58;00" &#41;; //привели к виду начала предыдущего месяца 
$dt2 = $date->format&#40; "t.m.Y 23&#58;59&#58;59" &#41;;  // привели к виду конца предыдущего месяца 

$st_date = strtotime&#40;$dt1&#41;; //перевели из строкового значения в unixtime 
$end_date = strtotime&#40;$dt2&#41;; //перевели из строкового значения в unixtime
Красиво )

solomon
Сообщения: 316
Зарегистрирован: Вт мар 16, 2010 08:39

Сообщение solomon »

Буду рад если кому-то принесет пользу и упростит жизнь

Ответить