Rogeriocz Asked: 2020-03-06 21:06:59 +0800 CST 2020-03-06 21:06:59 +0800 CST 2020-03-06 21:06:59 +0800 CST 如何将整数转换为小时和分钟 772 如何将存储在 varchar 表中的整数转换为小时和分钟? 数据以这种方式保存在 MySQL 中示例:1030我需要将其显示为10:30 am. 可以在 PHP 或 MySQL 中进行转换吗? php 5 Answers Voted Best Answer Marcial Cahuaya 2020-03-06T21:25:13+08:002020-03-06T21:25:13+08:00 您可以使用substrPHP 函数来完成。 例子: $hora = substr('1030', 0, 2); // Tendrás 10 $minuto = substr('1030', 2, 2); // Tendrás 30 然后我们继续连接: $nueva_hora = $hora.':'.$minuto; substr关于这里的更多信息:http: //php.net/manual/es/function.substr.php userStack 2020-03-06T21:32:05+08:002020-03-06T21:32:05+08:00 具有功能date_create和date_format 示例:指定H:i:s使其仅考虑小时-分钟-秒 <?php $date = date_create('1030'); echo date_format($date, 'H:i:s'); ffflabs 2020-03-07T04:11:46+08:002020-03-07T04:11:46+08:00 另一种有效方式,使用DateTime对象及其工厂createFromFormat $hora = DateTime::createFromFormat('Hi', '1030'); echo $hora->format('H:i:s'); A. Cedano 2020-03-07T05:23:04+08:002020-03-07T05:23:04+08:00 它也可以在 MySQL SELECT 中完成,无需经过 PHP。 我在查询中显示 4 列:一列包含原始数据,因为它会出现在表中......考虑到可能存在输入错误,另一列具有正确的时间,即强制它具有 4 位数字,在这种情况下的值,例如130,为此,使用LPAD0将一个添加到左侧,另一个添加AM/PM 格式的时间,另一个添加24H 格式的时间。 正如我已经说过的,该查询旨在纠正可能的错误值,并且还处理以 24 小时格式输入的值,例如1330. 最终结果(第 3 列和第 4 列)实际上是类型的数据DATETIME,由MySQL 的STR_TO_DATE()函数获得。并且由于它是类型的数据DATETIME,您可以根据需要显示结果,只需修改格式说明符即可。在这种情况下,我使用了'%r'and '%H:%i',但它们可以更改为任何其他有效的 :) SQL小提琴 MySQL 5.6 架构设置: CREATE TABLE horas (`id` int, `hora_string` varchar(4)) ; INSERT INTO horas (`id`, `hora_string`) VALUES (1, '1030'), (2, '130' ), (3, '1330' ), (3, '0130') ; 查询 1: SELECT hora_string as hora_bien_o_mal, LPAD(hora_string,4,'0') as hora_bien, DATE_FORMAT( STR_TO_DATE( LPAD(hora_string,4,'0'),'%H%i'), '%r') as hora_AMPM, DATE_FORMAT( STR_TO_DATE( LPAD(hora_string,4,'0'),'%H%i'), '%H:%i') as hora_24 FROM horas 结果: | hora_string | hora_bien | hora_AMPM | hora_24 | |-------------|-----------|-------------|---------| | 1030 | 1030 | 10:30:00 AM | 10:30 | | 130 | 0130 | 01:30:00 AM | 01:30 | | 1330 | 1330 | 01:30:00 PM | 13:30 | | 0130 | 0130 | 01:30:00 AM | 01:30 | Jose D. Jurado 2020-03-07T05:15:43+08:002020-03-07T05:15:43+08:00 我认为最简单、最快和最有效的方法是: substr_replace( $time, ':', -2, 0 ); 这会将您转换为以下内容: '10:30' 当值为 1030 时 '09:30' 当值为 0930 时 '9:30' 当值为 930 并且,有了这个输出,它可以用 AM 或 PM 显示如下: date('h:i A', strtotime($time)); 一个完整的例子: $time = substr_replace( '930', ':', -2, 0 ); echo date('h:i A', strtotime($time)); 输出: 09:30 AM
您可以使用
substr
PHP 函数来完成。例子:
然后我们继续连接:
substr
关于这里的更多信息:http: //php.net/manual/es/function.substr.php具有功能
date_create
和date_format
示例:指定
H:i:s
使其仅考虑小时-分钟-秒另一种有效方式,使用DateTime对象及其工厂
createFromFormat
它也可以在 MySQL SELECT 中完成,无需经过 PHP。
我在查询中显示 4 列:一列包含原始数据,因为它会出现在表中......考虑到可能存在输入错误,另一列具有正确的时间,即强制它具有 4 位数字,在这种情况下的值,例如
130
,为此,使用LPAD0
将一个添加到左侧,另一个添加AM/PM 格式的时间,另一个添加24H 格式的时间。正如我已经说过的,该查询旨在纠正可能的错误值,并且还处理以 24 小时格式输入的值,例如
1330
.最终结果(第 3 列和第 4 列)实际上是类型的数据
DATETIME
,由MySQL 的STR_TO_DATE()函数获得。并且由于它是类型的数据DATETIME
,您可以根据需要显示结果,只需修改格式说明符即可。在这种情况下,我使用了'%r'
and'%H:%i'
,但它们可以更改为任何其他有效的 :)SQL小提琴
MySQL 5.6 架构设置:
查询 1:
结果:
我认为最简单、最快和最有效的方法是:
这会将您转换为以下内容:
并且,有了这个输出,它可以用 AM 或 PM 显示如下:
一个完整的例子:
输出: