假设我有以下日期/日期时间。我如何才能最好地分辨哪些是在午夜(即时间是00:00:00)?第一个不应该是午夜,但接下来的三个应该是。
$d1 = new DateTime('12/10/2012 05:33'); $d2 = new DateTime('12/10/2012'); $d3 = new DateTime('12/10/2012 00:00'); $d4 = new DateTime('12/10/2012 00:00:00');
字符串
owfi6suc1#
检查小时和分钟是否都为零:
if( $date->format( 'H') == 0 && $date->format( 'i') == 0) { echo "Midnight!"; }
bfhwhh0e2#
您必须指定时区并使用DateTime
$test = new DateTime('NOW', new DateTimeZone('Asia/Kolkata')); $h=$test->format('H'); $m=$test->format('i'); $s=$test->format('s'); if( $h == 0 && $m==0 && $s == 0) { echo "Midnight!"; }
fnx2tebb3#
你可以用正则表达式或者类型转换来检查相关部分是否只包含0:
$string = $dateTime->format('Hisu'); $isMidnight = preg_match('/^0+$/usD', $string); $isMidnight = !(int) $string;
字符串您可以使用格式设置粒度,
Hisu
His
Hi
H
hl0ma9xz4#
您可以从datetime对象中获取未分隔的时间部分,从中删除所有0值,然后检查剩下的是否为空字符串。产品编号:(Demo)
0
$d1 = new DateTime('12/10/2012 05:33'); $d2 = new DateTime('12/10/2012'); $d3 = new DateTime('12/10/2012 00:00'); $d4 = new DateTime('12/10/2012 00:00:00'); function isMidnight(DateTime $dt): bool { return !trim($dt->format('Hisu'), '0'); } var_dump(isMidnight($d1), isMidnight($d2), isMidnight($d3), isMidnight($d4));
字符串输出量:
bool(false) bool(true) bool(true) bool(true)
型
dbf7pr2w5#
只需将您的时间格式化为已知的状态/格式,然后检查00:00:00的值。例如:
$times = [ $d1 = new DateTime('12/10/2012 05:33'), $d2 = new DateTime('12/10/2012'), $d3 = new DateTime('12/10/2012 00:00'), $d4 = new DateTime('12/10/2012 00:00:00') ]; foreach ($times as $time) { if ($time->format('H:i:s') == '00:00:00') { echo 'Midnight'; } else { echo 'Not midnight'; } }
5条答案
按热度按时间owfi6suc1#
检查小时和分钟是否都为零:
字符串
bfhwhh0e2#
您必须指定时区并使用DateTime
字符串
fnx2tebb3#
你可以用正则表达式或者类型转换来检查相关部分是否只包含0:
字符串
您可以使用格式设置粒度,
Hisu
精确到微秒,His
精确到秒,Hi
精确到分钟,H
精确到小时。hl0ma9xz4#
您可以从datetime对象中获取未分隔的时间部分,从中删除所有
0
值,然后检查剩下的是否为空字符串。产品编号:(Demo)
字符串
输出量:
型
dbf7pr2w5#
只需将您的时间格式化为已知的状态/格式,然后检查00:00:00的值。例如:
字符串