Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Странный вывод...
Форумы портала PHP.SU » » Кодировки и все смежное » Странный вывод...

Страниц (2): [1] 2 »
 

1. armancho7777777 - 25 Декабря, 2011 - 17:24:00 - перейти к сообщению
Всем привет!
Почему echo 08 и echo 09 выводит 0 ?
2. Самогонщик - 25 Декабря, 2011 - 17:25:56 - перейти к сообщению
Потому что в восьмеричных СС не бывает цифер 8 и 9.
3. Champion - 25 Декабря, 2011 - 17:27:18 - перейти к сообщению
Потому что на 0 начинаются числа восьмеричной системы счисления. А там всего 8 цифр - 9 и 8 там нету. Можно вывести echo '09', тогда получится
(Добавление)
Самогонщик, обогнал. Точно - самогонщик.
4. armancho7777777 - 25 Декабря, 2011 - 17:30:54 - перейти к сообщению
Champion пишет:
Можно вывести echo '09', тогда получится

Да ну это-то ясно)

А как преобразовать дату с ведущими нулями "09-09-2011" в такую "9-9-2011" ?
5. Самогонщик - 25 Декабря, 2011 - 17:34:27 - перейти к сообщению
Можно воспользоваться функциями преобразования дат: сначала в юникс-время, потом в строку.

Ну или разобрать стоку на части и вырезать нули, т.е. манипулировать как строкой, а не как датой.

Всё зависит от того какой вариант тебе больше подходит.
6. armancho7777777 - 25 Декабря, 2011 - 17:52:24 - перейти к сообщению
Так нормально?

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $Date = "2010-08-09";
  4.  
  5. $data_elements = explode("-",$Date);
  6.  
  7. foreach($data_elements as $data_element){
  8.    $arrDate[] = ltrim($data_element, 0);
  9. }
  10.  
  11. $resultDate = implode("-", $arrDate);
  12.  
  13. echo $resultDate;
  14.  
  15.  


... или можно по короче?
7. Champion - 25 Декабря, 2011 - 17:52:27 - перейти к сообщению
preg_replace('/(?<!\d)0/', '', $date)
(Добавление)
Еще
j День месяца без ведущего нуля
n Порядковый номер месяца без ведущего нуля
Это если дата функцией date генерируется
8. armancho7777777 - 25 Декабря, 2011 - 17:55:40 - перейти к сообщению
Champion пишет:
preg_replace('/(?<!\d)0/', '', $date)
(Добавление)
Еще
j День месяца без ведущего нуля
n Порядковый номер месяца без ведущего нуля
Это если дата функцией date генерируется


Спасибо Champion Улыбка

P.S. ... надо регулярку учить Огорчение
(Добавление)
Champion пишет:
Еще
j День месяца без ведущего нуля
n Порядковый номер месяца без ведущего нуля
Это если дата функцией date генерируется

Это я знаю. Просто дата в БД записывается с ведущими нулями, а для mktime() нужно без.

Мне надо вычислить разницу двух дат в днях.
Сделал так:

PHP:
скопировать код в буфер обмена
  1.  
  2. $Date = "2011-09-09";
  3.  
  4. $Date = preg_replace('/(?<!\d)0/', '', $Date); // Удаляем ведущие нули
  5. $arrDate = explode("-", $Date);
  6.  
  7. $d = $arrDate[2];  // День
  8. $m = $arrDate[1];  // Месяц
  9. $y = $arrDate[0];  // Год
  10.  
  11. $a = mktime(0, 0, 0, $m, $d, $y); // Вычисляемая дата
  12. $b = mktime(0, 0, 0, date('n, j, Y')); // Текущая дата
  13. $c = 24*60*60; // Количество секунд в сутках
  14. $abc = ($a-$b)/$c; // Результат разницы в днях
  15.  
  16. if($abc < 0){
  17.   echo "Прошло ".($abc*(-1))." дней";  
  18. }else{
  19.   echo "Осталось ".$abc." дней";       
  20. }
  21.  

(Добавление)
Champion пишет:
preg_replace('/(?<!\d)0/', '', $date)

Прокомментирйте пожалуйста строку, если не сложно.
9. Slesher - 25 Декабря, 2011 - 18:10:37 - перейти к сообщению
armancho7777777 пишет:
Мне надо вычислить разницу двух дат в днях.


может поможет http://php.net/manual/en/function.date-diff.php
10. Самогонщик - 25 Декабря, 2011 - 18:15:48 - перейти к сообщению
Слишком сложно
http://docs.php.net/manual/en/fu...n.date-parse.php
http://docs.php.net/manual/en/fu...on.strtotime.php

Только нужно внимательно прочитать документации перед их использованием.
11. armancho7777777 - 25 Декабря, 2011 - 18:32:16 - перейти к сообщению
Slesher пишет:
http://php.net/manual/en/function.date-diff.php

На хосте PHP 5.2
12. Мелкий - 25 Декабря, 2011 - 18:50:14 - перейти к сообщению
armancho7777777, что вам вообще от дат надо? А то MySQL сам отлично умеет даты сравнивать.
Просто есть записи с датой и надо вывести, сколько прошло/через сколько наступит?
http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]unction_datediff
13. armancho7777777 - 25 Декабря, 2011 - 19:06:40 - перейти к сообщению
Мне надо удалять не активированные учётные записи посредством CRON.
На пример, сегодня пользователь зарегистрировался, прошло 10 дней,
и если он так и не активировал аккаунт, то удаляем из БД.

Вот, написал функцию:

PHP:
скопировать код в буфер обмена
  1.  
  2. function difference_in_days($date1, $date2 = null){
  3.        
  4.       $date1 = preg_replace('/(?<!\d)0/', '', $date1); // Удаляем ведущие нули
  5.       $arrDate1 = explode("-", $date1);
  6.       $date1 = mktime(0, 0, 0, $arrDate1[1], $arrDate1[2], $arrDate1[0]);
  7.        
  8.       if($date2 === null){
  9.          $date2 = mktime(0, 0, 0, date('n, j, Y'));
  10.       }else{
  11.           $date2 = preg_replace('/(?<!\d)0/', '', $date2);  // Удаляем ведущие нули
  12.           $arrDate2 = explode("-", $date2);
  13.           $date2 = mktime(0, 0, 0, $arrDate2[1], $arrDate2[2], $arrDate2[0]);
  14.        }
  15.  
  16.        return  ($date1-$date2)/86400; // Результат разницы в днях
  17.  
  18. }
  19.  
  20. // Второй параметр по умолчанию равен текущей дате
  21. echo difference_in_days("2011-09-08", "2011-09-09"); // == -1
  22. echo difference_in_days("2010-12-26"); // == -365 (сегодня 2011-12-26)
  23. echo difference_in_days("2012-12-26"); // == 366
  24.  
14. Мелкий - 25 Декабря, 2011 - 19:31:35 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. 'delete from users where reg_date < "'.date('Y-m-d',time() - 10 * 24 * 3600).'" and is_confirmed = 0'

или
CODE (SQL):
скопировать код в буфер обмена
  1. DELETE FROM users WHERE reg_date < now() - interval 10 day AND is_confirmed = 0
15. armancho7777777 - 25 Декабря, 2011 - 19:56:55 - перейти к сообщению
Спасибо Мелкий!
Подскажите пожалуйста, а так верно будет,
если надо удалить записи 10-ти дневной давности?

PHP:
скопировать код в буфер обмена
  1.  
  2. mysql_query("DELETE FROM `users` WHERE `date_reg` < '".date('Y-m-d')."' - INTERVAL 10 DAY AND `is_confirmed`=0");
  3.  


Тип поля для даты date

 

Powered by ExBB FM 1.0 RC1