Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Баг php date_create_from_format()
AllesKlar  
 ۩     Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3376
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 12 дней
Карма: 170




var_dump(date_create_from_format('m/y', '13/15'));

ТА-ДА!!!
object(DateTime)[2]
public 'date' => string '2016-01-19 21:14:44.000000' (length=26)
public 'timezone_type' => int 3
public 'timezone' => string 'UTC' (length=3)

на дворе январь 2016 :)


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11788
Пользователь №: 23195
На форуме: 6 лет, 4 месяца, 15 дней
Карма: 429

Трезвый :
7 лет, 3 месяца, 15 дней


Цитата (AllesKlar @ 20.03.2015 - 00:25)
'm/y', '13/15'

Цитата (AllesKlar @ 20.03.2015 - 00:25)
2016-01

вполне вменяемый результат для 13-го месяца 15-го года, не вижу ничего странного и уж тем более бага


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3376
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 12 дней
Карма: 170




Ну, в нашем Григорианском календаре, как бэ не существует 13-го месяца, и отдавая этому чуду дату в строке, хотелось бы получить именно эту дату или false, а не фантазии увлекающихся изотерикой разработчиков smile.gif


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11788
Пользователь №: 23195
На форуме: 6 лет, 4 месяца, 15 дней
Карма: 429

Трезвый :
7 лет, 3 месяца, 15 дней


согласен, даже варнингов никаких
Цитата
$ php -r "var_dump(date_create_from_format('m/y', '13/15'), date_get_last_errors());"
class DateTime#1 (3) {
  public $date =>
  string(26) "2016-02-20 01:20:33.000000"
  public $timezone_type =>
  int(3)
  public $timezone =>
  string(11) "Europe/Kiev"
}
array(4) {
  'warning_count' =>
  int(0)
  'warnings' =>
  array(0) {
  }
  'error_count' =>
  int(0)
  'errors' =>
  array(0) {
  }
}

имхо, в идеале вообще эксепшн должен кидаться без танцев с бубном с дополнительными функциями


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3376
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 12 дней
Карма: 170




Кто там в английском силен, запостите на баг-трекер php smile.gif


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22694
Пользователь №: 20039
На форуме: 7 лет, 2 дня
Карма: 599




А как по мне, так очень даже удобно, не надо использовать дополнительные функции для подсчёта нужного месяца, всё уже встроено в функцию.
Ты же, вроде, сам можешь контроллировать процесс и понимать какие данные ты вводишь, а нужно исключение, так и напиши раньше:
если месяц >12.


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3376
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 12 дней
Карма: 170




inpost
Нет, это уже все костыли.
Если я ловлю из формы строку, то хочу проверить, дата это или нет.
Естественно, я проверю и по-другому. Но WTF???
А для добавления интервала, есть метод add этого же самого класса DateTime


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
stump  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1067
Пользователь №: 40808
На форуме: 1 год, 10 месяцев, 17 дней
Карма: 14




Особенность работы функции, но не баг.


--------------------
Трус не играет в хокей
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22694
Пользователь №: 20039
На форуме: 7 лет, 2 дня
Карма: 599




AllesKlar
Ты хочешь, чтобы код писался так:
сначала через DateTime менялось время, а потом уже выставлялось через данную функцию, то есть делать целых 2 действия, вместо одного, который сейчас сделан.

"Если я ловлю из формы строку, то хочу проверить, дата это или нет."
А может быть не дата? Если это не хакерюга, то он через форму заполнит и отправит реальную дату. Если это хакерюга, тебе ли не всё равно, что он введёт 13/19 и получит 01/20 ? Или ты так сильно заботишься о хакерочках и считаешь, что им надо отдельную табличку выводить "извините, хакерочек, вы ввели не те данные".
Ограничиваешь ввод ты через форму и JS, если в ПХП пришли не те данные, значит либо баг в JS, либо кто-то умышленно хочет поломать. Какой смысл ради таких стараться?


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3376
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 12 дней
Карма: 170




inpost
Я вот вообще не понимаю, о чем тут спор.
Какой хакерюга?
Валидация данных кредитной карты.
Дата окончания действия карты имеет формат 'MM/YY'
И если человек просто перепутал и сначала ввел год, а потом месяц, я должен эту ситуацию отловить.

В документации четко сказано:
Цитата
Создает и возвращает экземпляр класса DateTime, соответствующий заданному формату


.... короче.... я понимаю, php... нестрогое типизирование, удобно дату хранить в стрингах, и складыывать 12 + зеленый.

Но ДАТА, она должна быть ДАТА. И если нет 13 месяца, значит 2 варианта, либо false, либо exception

Всё остальное это ГО-ВНО-КОД


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса