首页
学习
活动
专区
圈层
工具
发布

HH:MM到秒
EN

Stack Overflow用户
提问于 2011-09-12 00:17:47
回答 3查看 413关注 0票数 1

我正在使用一个API函数,它返回一个估计的到达时间,单位是hh:mm left,即。在到达之前还有0:31。

我尝试做的是将返回的hh:mm与当前时间相加,因此最终结果是以UTC为单位的估计到达时间。

我目前有一个非常简单的脚本,它按原样工作,但由于API函数的格式是hh:mm,而strtotime似乎不能识别除整数以外的任何加减,如果在下面的脚本中用+hh:mm替换+07,这将不起作用。

代码语言:javascript
复制
<?php

$time = strtotime("now +07 hours");

print gmdate('H:i T', $time);

?>

所以我的最终结果应该是UTC的ETA的hh:mm。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-12 00:40:47

一种更灵活的方式:

代码语言:javascript
复制
<?php
function getETA($arrival, $timezone='UTC', $format='H:i T')
{
    list($hours,$minutes) = explode(':', $arrival);

    $dt = new DateTime('now', new DateTimeZone($timezone));
    $di = new DateInterval('PT'.$hours.'H'.$minutes.'M');
    $dt->add($di);

    return $dt->format($format);
}
?>

用法:

代码语言:javascript
复制
<?php
    echo getETA('07:10');
    echo getETA('07:10', 'America/New_York', 'h:i a T');
?>

输出示例:

代码语言:javascript
复制
23:56 UTC
07:56 pm EDT 
票数 3
EN

Stack Overflow用户

发布于 2011-09-12 00:21:07

如果您将strtotime参数更改为now +07 hours, +06 minutes,您应该能够添加它们。要将小时和分钟分开,只需使用explode(':', $returnedString)

代码语言:javascript
复制
$returnedString = '07:06';
$returnedTime = explode(':', $returnedString);

$time = strtotime("now +{$returnedTime[0]} hours, +{$returnedTime[1]} minutes");
// Or this
// $time = strtotime('now +' . $returnedTime[0] . ' hours, +' . $returnedTime[1] . ' minutes');

print gmdate('H:i T', $time);
票数 3
EN

Stack Overflow用户

发布于 2011-09-12 00:26:56

代码语言:javascript
复制
<?php
$str  = "17:26";
$secs = (substr($str, 0, 2) * 3600) + (substr($str, 3, 2) * 60);

echo $secs;
// Output: 62760
?>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7379543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档