如何在PHP中分割时间值?

时间:2019-04-18 07:07:46

标签: php

我使用timepicker js从HTML表单获取这些时间值。

我想将值分为三(3)个变量,分别是$ hour,$ minute和$ period。

问题是我无法将'AM''PM'值拆分为另一个变量。

$ minute 保持值为“ 00 PM”。我想将AM或PM存储到另一个变量调用 $ period

到目前为止,我已经完成了下面的代码。

Time.php

<?php

// $btArray           = explode(':', $_POST['app_time']);    

$btArray              = explode(':', '11:00 PM');
$hour                 = strlen(trim($btArray[0])) > 1 ? trim($btArray[0]) : '0' . trim($btArray[0]);
$minute               = trim($btArray[1]);
$period               = trim($btArray[2]);


$query = "UPDATE TABLE
SET 
                BOOK_TIME       = '" . $hour . ":" . $minute . "', 
                TIME_PERIOD     = '" . $period ."'

WHERE 
                TRACK_NUM       = ''
";
?>

我的目标是分割值,以便将其存储到数据库中。

感谢有人可以帮助我解决此问题。

谢谢。

5 个答案:

答案 0 :(得分:1)

$btArray= "7:00 am";
preg_match("/([0-9]{1,2}):([0-9]{1,2}) ([a-zA-Z]+)/", $btArray, $match);
$hour = $match[1];
$min = $match[2];
$period = $match[3];

$query = "UPDATE TABLE
              SET 
                BOOK_TIME       = '" . $hour . ":" . $minute . "', 
                TIME_PERIOD     = '" . $period ."'
              WHERE 
                TRACK_NUM       = ''
";

答案 1 :(得分:1)

我宁愿建议使用substr()函数作为参数,例如:小时,分钟,秒是固定的。

首先需要检查字符串长度是否为8。

然后,根据位置获取参数。

如果您的日期格式不变。

<?php
$str = '11:00 PM';
if (strlen($str) == 8) {
 $hour = substr($str, 0, 2);
 $minute = substr($str, 3, 2);
 $period = substr($str, 6, 2);
}
echo '<pre>';print_r('Hour: '. $hour);echo '</pre>';
echo '<pre>';print_r('Minute: '. $minute);echo '</pre>';
echo '<pre>';print_r('AM/PM: '. $period);echo '</pre>';

输出:

Hour: 11
Minute: 00
AM/PM: PM

Working Demo:

答案 2 :(得分:1)

尝试一下

$time = '11:00 PM';
//first remove right two char
$period = substr($time, -2, 2);
//remove that string from main string
$newTime = str_replace($period, "", $time);
//convert remaining string to array
$btArray = explode(':', $newTime);
//check hour string length and concate 0
$hour = (strlen($btArray[0]) > 1) ? $btArray[0] : '0'.$btArray[0];
$mint = $btArray[1];
echo $hour.'<pre>';
echo $mint.'<pre>';
echo $period.'<pre>';
die;

输出:

11
00
PM

答案 3 :(得分:1)

您可以尝试以下代码进行期望的输出。

$btArray = explode(':', '11:00 PM');
$hour = strlen(trim($btArray[0])) > 1 ? trim($btArray[0]) : '0' . trim($btArray[0]);
$minute_period_array = explode(' ', $btArray[1]);
$minute = trim($minute_period_array[0]);
$period = trim($minute_period_array[1]);
echo 'Hour - ' . $hour . '<br/>';
echo 'Minute - ' . $minute . '<br/>';
echo 'Period - ' . $period . '<br/>';

输出:

Hour - 11
Minute - 00
Period - PM

答案 4 :(得分:-1)

如果始终以相同的格式获取输入值,则可以采用这种方式:

$input = '8:05 PM';
list($hour, $minute, $period) = explode(' ', str_replace(':', ' ', $input), 3);

// And then clean the variables

$hour = str_pad($hour, 2, '0', STR_PAD_LEFT);
$minute = str_pad($minute, 2, '0', STR_PAD_LEFT);
$period = strtoupper(trim($period));

// $hour -> 08, $minute -> 05, $period -> PM