【问题标题】:Adding minutes to time in format h:i A in php giving unexpected results在 php 中以 h:i A 格式添加分钟数会产生意想不到的结果
【发布时间】:2017-11-04 16:08:21
【问题描述】:

我有时间在我的数据库中,格式为 12:30 PM 07:30 AM 等。我需要格式为 ['8.30 AM', '8.45 AM'], ['12:15 PM', '12:30 PM']... 时间采用 UTC 格式。我有一个功能可以根据用户时区将其转换为本地时间。

function convertTimeToUSERzone($str, $userTimezone, $format = 'h:i A'){
if(empty($str)){
return '';
}
$new_str = new DateTime($str, new DateTimeZone('UTC') );
$new_str->setTimeZone(new DateTimeZone( $userTimezone ));
return $new_str->format( $format);
}

需要将 15 分钟添加到从 DB 开始的时间,例如 12:15 PM 到 12:30 PM。我做了以下事情,结果出乎意料。

while($r = $stmt3->fetch())
{
$consult_time_UTC[] = $r['consult_time_utc'];
}
$consult_time_UTC = implode(',',$consult_time_UTC); 
$date = new DateTime($consult_time_UTC);
$date->add(new DateInterval("PT{15}M"));
$to = $date->format('h:i A'); //require format as ['8.30 AM', '8.45 AM'], ['12:15 PM', '12:30 PM']
//.....
}

我试图在现有时间上增加 15 分钟。如何以 h:i 格式将 15 分钟时间添加到每个数组元素并以格式 ['8.30 AM', '8.45 AM'], ['12:15 PM', '12:30 PM'] 获取?困惑的新手。

【问题讨论】:

  • DateInterval("PT15M"))
  • @splash58 未捕获的异常:DateTime::__construct():无法在位置 6 (P) 解析时间字符串(12:30 PM,07:30 AM):在数据库
  • 为什么要把 DateTime 设置为两个时间值?
  • @splash58 我的时间选择器设置为 15 分钟的增量,它需要采用 ['8.30 AM', '8.45 AM'], ['12:15 PM', '12: 30 PM'] 用于检测已选择的日期。

标签: php strtotime


【解决方案1】:

我不确定,但无论如何您都应该为每个数组项添加时间间隔。像这样的

while($r = $stmt3->fetch())
{
   $r['consult_time_utc'];
   $date = new DateTime($consult_time_UTC);
   $date->add(new DateInterval("PT15M"));
   $consult_time_UTC[] = $date->format('h:i A');
}
$consult_time_UTC = implode(',',$consult_time_UTC); 

【讨论】:

    猜你喜欢
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 2019-03-12
    • 2019-04-05
    相关资源
    最近更新 更多