0

I want the user to select a time of day which I then want to convert using the date() function so it can be inserted into a Mysql database datetime table field.

<select name="event-start-time-hours" class="event-time">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8" selected>8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
</select>


<select name="event-start-time-mins" class="event-time">
    <option value="00" selected >00</option>
    <option value="05">05</option>
    <option value="10">10</option>
    <option value="15">15</option>
    <option value="20">20</option>
    <option value="25">25</option>
    <option value="30">30</option>
    <option value="35">35</option>
    <option value="40">40</option>
    <option value="45">45</option>
    <option value="50">50</option>
    <option value="55">55</option>
</select>

<select name="event-start-timeofday" class="event-time">
    <option value="" selected >AM</option>
    <option value="">PM</option>
</select>

I tried:

    $time = $_POST['event-start-time-mins'] .$_POST['event-start-time-hours'];
    var_dump($dob = date("H:i:s", $time));
print_r($_POST['event-start-time-hours']); 
print_r($_POST['event-start-time-mins']);

Which returns:

string(8) "01:03:22" 220

So how do I format this correctly? Many thanks.

crmepham
  • 4,676
  • 19
  • 80
  • 155

3 Answers3

1

Use mktime.

$time = mktime($_POST['event-start-time-hours'], $_POST['event-start-time-mins'], 0);
var_dump($dob = date("H:i:s", $time));

See Codepad.


Note : If your are using PM, just add 12 to hours.

Ashwini Agarwal
  • 4,828
  • 2
  • 42
  • 59
1

used mktime(hour,minute,second,month,day,year,is_dst); function for create date take refence of mktime

Shakti Patel
  • 3,762
  • 4
  • 22
  • 29
1

First fix your HTML, so your select has value :

<select name="event-start-timeofday" class="event-time">
    <option value="AM" selected>AM</option>
    <option value="PM">PM</option>
</select>

Use DateTime.

$dt = new DateTime;
$offset = $_POST['event-start-timeofday'] == 'PM' ? 12 : 0;
$dt->setTime($_POST['event-start-time-hours'] + $offset, $_POST['event-start-time-mins']);
echo $dt->format('H:i:s');

If you need time validator, you can use this one.

Community
  • 1
  • 1
Glavić
  • 42,781
  • 13
  • 77
  • 107