PHP Дата от strtotime с текущим временем - PullRequest
0 голосов
/ 11 февраля 2012

Я искал в Интернете этот ответ и пришел пустым ... Я очень устал, поэтому я подумал, что могу попробовать ...

У меня есть переменная с датой из текстового поля

$effectiveDate=$_REQUEST['effectiveDate'];

Что я пытаюсь сделать, это взять эту дату и добавить текущее время

date('Y-m-d H:i:s', strtotime($effectiveDate))

Когда я повторяю это, я получаю 1969-12-31 19: 00: 00

Возможно ли это? Может ли кто-нибудь указать мне правильное направление?

Ответы [ 4 ]

7 голосов
/ 12 февраля 2012

Я нашел решение моей проблемы ....

$currentDate = date("Y-m-d");
$currentTime = date("H:i:s");

$currentDate =  date("Y-m-d H:i:s", strtotime($currentDate . $currentTime));

echo $currentDate;

Это берет дату из переменной в одном формате и берет дату из другой переменной в другом формате и объединяет их:)

Спасибо всем за потраченное время .....

DateTime::createFromFormat

также будет работать, но только если у вас PHP 5.3 или выше ... (я думаю)

1 голос
/ 11 февраля 2012

Результат, который вы видите, вызван тем, что введенная дата не соответствует формату, распознаваемому strtotime.Наиболее вероятный случай, о котором я могу подумать, не зная формата, который вы использовали, это то, что вы использовали порядок, в котором США неправильно указали месяц и день - это сбивает с толку strtotime, потому что, если он принимает и то и другое, он не может различить февраль3 и 2 марта, поэтому он должен отклонять даты в США.

Самый надежный формат для strtotime это ГГГГ-ММ-ДД ЧЧ: ii: сс, поскольку он однозначен.

1 голос
/ 11 февраля 2012

СтрокаffectiveDate не в формате, который распознает strtotime, поэтому strtotime возвращает значение false, которое интерпретируется как 0, что приводит к отображению даты как 1 января 1970 года в 00:00:00 минус смещение часового пояса.

0 голосов
/ 11 февраля 2012

Дата - это просто временная метка, она не является объектно-ориентированной, и мне это не нравится.

Вы можете использовать объект DateTime.

Лучший объектно-ориентированный способ:

$effectiveDate=$_REQUEST['effectiveDate'];

// here you must pass the original format to pass your original string to a DateTimeObject
$dateTimeObject = DateTime::createFromFormat('Y-m-d H:i:s', $effectiveDate);

// here you must pass the desired format
echo $dateTimeObject->format('Y-m-d H:i:s');
...