получение только временной метки из строки - PullRequest
0 голосов
/ 17 июня 2019

Предположим, у меня есть строка времени '9:30', которую я хочу преобразовать в метку времени. Сейчас я извлекаю его и вручную вычисляю метку времени.

list($hour, $minute) = explode(':', '9:30');
$timestamp = $hour * 3600 + $minute * 60;

Мне интересно, есть ли разумный способ использования объекта Carbon или DateTime.

Ответы [ 2 ]

1 голос
/ 17 июня 2019

использование strtotime() руководство

$time = '9:30';
$timestamp = strtotime($time);
echo date('H:i',$timestamp);
0 голосов
/ 17 июня 2019

Я не думаю, что вы сможете получить метку времени только из часа или минуты, так как метка времени - это количество секунд с 00:00:00 четверга 1 января 1970 года (проверьте ссылку в Википедии подробнее). Так что без части даты вы не можете иметь метку времени. Не могли бы вы объяснить, как вы планируете использовать это?

Если вы планируете рассчитать другую временную метку из заданной даты, тогда вы можете просто сделать это по-другому. Допустим, вы планируете получить метку времени через 1 день или 24 часа после указанного времени, затем вы можете сделать это следующим образом (не объектно-ориентированным способом):

$givenTimestamp = strtotime('17-06-2018 09:30:00');
$dayInSeconds = 24*60*60;
$calculatedTimeStamp = $givenTimestamp + $dayInSeconds;

Если вы просто пытаетесь узнать, сколько секунд прошло для временного отрезка метки времени (например, 9:30 в вашем примере для данного дня), то вы можете просто сделать это следующим образом:

list($hour, $minute) = explode(':', date ('H:i', strtotime('2018-06-16 09:30:00')));
$secondsSinceStartOfDay = intval($hour)*60*60 + intval($minute) * 60;

Вы можете получить тот же результат, не используя intval для $ hour и $ minute, но было бы лучше использовать intval для них, чтобы избежать возможных проблем в некоторых случаях.

Обновление с Carbon

Из документации Carbon кажется, что вам все еще нужна часть даты для генерации метки времени. Поэтому, если у вас есть $ date, например, «2018-06-16» и $ time, например, «09: 30», вы можете воссоздать дату и время следующим образом:

$dateTimeString = $date .' '. $time .':00';
$carbonDateTime = Carbon::parse($dateTimeString);
// $carbonDateTime will now have your date time reference
// you can now get the timestamp like this
echo $carbonDateTime->timestamp;
...