- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
function returnDate($stamp){
global $settings;
$day = strftime("%d",$stamp+($settings['timeoffset']*3600));
$month = strftime("%m",$stamp+($settings['timeoffset']*3600));
$year = strftime("%Y",$stamp+($settings['timeoffset']*3600));
switch ($month){
case 01 : $month = "01"; break;
case 02 : $month = "02"; break;
case 03 : $month = "03"; break;
case 04 : $month = "04"; break;
case 05 : $month = "05"; break;
case 06 : $month = "06"; break;
case 07 : $month = "07"; break;
case 08 : $month = "08"; break;
case 09 : $month = "09"; break;
case 10 : $month = "10"; break;
case 11 : $month = "11"; break;
case 12 : $month = "12"; break;
}
return "$day.$month.$year";
}
Взято из чешского шаблона под одну цмску. Автору, наверно, платят как Маяковскому - за каждую строчку :-)
ivmaroz 13.12.2009 23:30 # 0
09 != 9
guest 13.12.2009 23:53 # 0
WGH 14.12.2009 00:17 # +1
guest 14.12.2009 07:22 # 0
ivmaroz 14.12.2009 08:42 # 0
09 - это в восмеричной системе счисления. А так как это не правильная запись, то 09 в PHP преобразуется в число 0
guest 14.12.2009 19:04 # 0
guest 14.12.2009 19:43 # 0
guest 14.12.2009 19:44 # +1
ivmaroz 14.12.2009 20:08 # 0
|)3F 14.12.2009 21:51 # 0
ivmaroz 14.12.2009 23:23 # 0
Во-вторых, Попробуйте сравнить 07 == "07" и 09 == "09", результаты будут разные
В-третьих, говнокод не в этом сравнении. Это так, в учебных целях
ivmaroz 14.12.2009 23:25 # +1
Во-первых, strftime возвращает не число, а строку. Это важно
|)3F 15.12.2009 00:52 # 0
RolCom 15.12.2009 12:54 # 0
guest 15.12.2009 13:40 # 0
> Во-вторых, Попробуйте сравнить 07 == "07" и 09 == "09", результаты будут разные
RolCom 15.12.2009 22:08 # 0
RolCom 15.12.2009 22:09 # 0
ivmaroz 16.12.2009 09:13 # 0
Читай не последний коммент, а всю ветку
P.S. Коммент #comment11606 мой
ivmaroz 16.12.2009 09:22 # 0
Это сейчас знание систем счисления сводится только к использованию функции base_convert, но не все смогут перевести из одной системы в другую используя листок и ручку
RolCom 16.12.2009 11:30 # 0
> Как раз таки важно. Функция возвращает строку, а сравнивается потом с числом.
> > Во-вторых, Попробуйте сравнить 07 == "07" и 09 == "09", результаты будут разные
Написанному под гостем. То что это ты первый обратил внимание на то что числа не в той системе я вижу.
В общем с учетом выясненного мой камент должен быть таким:
> Во-вторых, Попробуйте сравнить 07 == "07" и 09 == "09", результаты будут разные
При чем тут это? Сравни 07 == 7 и 09 == 9, результаты будут такие же разные. Потому что строка в правой части приводится к числу, т.к. в левой части число.
RolCom 16.12.2009 12:17 # +1
Если мы сравним "0.0" == "0E0", "0.0" == "0A0", 0.0 == "0A0", то результаты будут разные.
Если хотя бы один из аргументов число, то он сравнивает оба аргумента как числа. Затем он пытается привести обе строки в числа, если они корректно приводятся, сравнивает их как числа. Иначе он сравнивает аргументы как строки.
Отсюда вывод, что даже если мы сравниваем две строки, они необязательно будут сравнены как строки. Поэтому во избежании неожиданностей лучше всегда сравнивать строки с помощью strcmp, несмотря на то что использования обычных операторов сравнения и switch дозволяется. То же самое относится и к использованию функции sort без второго параметра, результаты могут быть непредсказуемыми.
Описанная выше особенность связанна с кривым унаследованием нетипизированости Perl.
Пожалуй, еще чудо-примерчик "9" == "000000900.000E-2"
ivmaroz 16.12.2009 13:36 # 0
Читайте всё, а не через строчку и включайте мозг, здесь уже все изложено
RolCom 16.12.2009 14:04 # 0
>>Во-первых, strftime возвращает не число, а строку. Это важно
>>Как раз таки важно. Функция возвращает строку, а сравнивается потом с числом.
Или
>>Нет, именно сравнение чисел
>>Т.е. тоже самое что и сравнить 09 и 9.
guest 14.07.2012 19:10 # 0
|)3F 16.12.2009 12:59 # 0
RolCom 16.12.2009 13:36 # +1
|)3F 16.12.2009 19:25 # 0