Второй параметр date()
должен быть правильной меткой времени (секунды с 1 января 1970 года). Вы передаете строку, которую date () не может распознать.
Вы можете использовать strtotime () для преобразования строки даты в метку времени. Однако даже strtotime () не распознает формат y-m-d-h-i-s
.
PHP 5.3 и выше
Используйте DateTime::createFromFormat
. Он позволяет вам указать точную маску - используя синтаксис date()
- для синтаксического анализа дат входящих строк.
PHP 5.2 и ниже
Вам придется проанализировать элементы (год , месяц, день, час, минута, секунда) вручную, используя substr()
и передайте результаты в mktime () , которые построят вам временную метку.
Но это большая работа! Я рекомендую использовать другой формат, который может понять strftime (). strftime () понимает какой-либо дата ввод короткий the next time joe will slip on the ice
. например, это работает:
$old_date = date('l, F d y h:i:s'); // returns Saturday, January 30 10 02:06:34
$old_date_timestamp = strtotime($old_date);
$new_date = date('Y-m-d H:i:s', $old_date_timestamp);
Как насчет чего-то типа:
if all([form1.is_valid(), form2.is_valid()]):
...
В общем случае можно было бы использовать понимание списка, чтобы результаты вычислялись спереди (в отличие от выражения генератора, которое обычно используется в этом контекст). например:
if all([ form.is_valid() for form in (form1,form2) ])
Это будет хорошо масштабироваться и для произвольного количества условий ... Единственный улов в том, что все они должны быть связаны «and
», в отличие от if foo and bar or baz: ...
.
(для короткого замыкания or
вы можете использовать any
вместо all
).
Вы можете просто использовать двоичный &
оператор, который будет выполнять логику AND без короткого замыкания на bools.
if form1.is_valid() & form2.is_valid():
...