Используйте am / pm для создания временной метки php - PullRequest
0 голосов
/ 19 февраля 2010

У меня есть пара текстовых полей, которые позволяют человеку вводить время и дату. Время вводится с помощью текстового поля для часов, текстового поля для минут, раскрывающегося списка для am / pm и некоторых раскрывающихся списков для месяцев / часов / лет

Итак, я хотел бы объединить все это, чтобы создать из него временную метку и сохранить ее в базе данных.

Но я запутался в том, как сделать все это, чтобы создать правильную временную метку, особенно с частью AM / PM.

Ответы [ 4 ]

4 голосов
/ 19 февраля 2010

Похоже, вы просто используете mktime () . Получите правильный номер часа, добавив 12 к pm, затем передайте аргументы в функцию.

if($is_pm) $hour += 12;
$time = mktime($hour, $minute, $second, $month, $day, $year);

Если вы ищете метку времени MySQL вместо метки времени UNIX, у вас есть два варианта:

  1. Построение метки времени в формате MySQL с использованием date () : date('Y-m-d H:i:s', $time);
  2. Пусть MySQL сделает это за вас: UPDATE table SET date = FROM_UNIXTIME($time) WHERE foo='bar'

Или вы можете просто сохранить целую временную метку в базе данных как целое число.

2 голосов
/ 19 февраля 2010

strtotime сделает это:

$timestamp = strtotime("$year-$month-$day $hours:$minutes $am_pm");

Просто убедитесь, что $ 0, $ day, $ hours и $ minutes - ноль.

1 голос
/ 19 февраля 2010

Предполагая, что вы уже проверили правильность ввода, вы можете использовать функцию mktime () . Если выбран PM, просто добавьте 12 к часам. Это вернет вам метку времени Unix. Вы можете передать этот результат в date () , чтобы отформатировать дату так, как вам бы хотелось.

0 голосов
/ 19 февраля 2010

Для преобразования в метку времени Unix вы можете использовать следующее:

strtotime("2009/01/02 12:13:14 PM");
strtotime("2009/01/02 12:13:14 AM");

Справочник по PHP: http://php.net/manual/en/function.strtotime.php

...