У меня есть база данных со временем, сохраненным как TIME
в формате 00:00:00
. База данных принимает NULL
, но я также использую функции, которые преобразуют время в 12-часовой формат только для просмотра.
Проблема в том, что когда время ввода пусто, функции, которые преобразуют формат, меняют NULL
на 00:00:00
, что мне было бы хорошо, но я не могу заставить его не печатать 12:00 AM
при преобразовании это назад к 12-часовому времени.
Мне нужно либо:
- Входные данные поступают в базу данных как
NULL
, а не 00:00:00
OR
- Ничего не отображается при преобразовании
00:00:00
в 12-часовое время.
Это варианты функций, которые я использовал, опять же, это работает, если значение в реальном времени.
function time_12_to_24_sql ($value, $default) {
$time = $_POST[$value];
return ((!array_key_exists($value,$_POST)) || $_POST[$value] == NULL) ? $defaultValue : date("H:i:s", strtotime($time));
}
function time_12_to_24 ($input) {
if($input == NULL) {
$retVal = $input;
}
if($input == 'NULL') {
$retVal = $input;
}
if (!isset($input)) {
$retVal = NULL;
}
if($input == '12:00 AM') {
$retVal = NULL;
}
if($input == '') {
$retVal = NULL;
}
else {
$retVal = date("H:i:s", strtotime($input));
}
return $retVal;
}
function time_24_to_12 ($input) {
if($input == NULL) {
$retVal = $input;
}
if (strtotime($input) == '00:00:00') {
$retVal = '';
}
if ($input == '') {
$retVal = '';
}
if (!isset($input)) {
$retVal = '';
}
else {
if(strtotime($input) > 0){
$retVal = date("g:i A", strtotime($input));
}
}
return $retVal;
}