【问题标题】:Adding a time string HH:MM (hours and minutes) to date timestamp将时间字符串 HH:MM(小时和分钟)添加到日期时间戳
【发布时间】:2018-06-24 15:04:52
【问题描述】:

我需要将存储在强(格式:hh:mm)的时间添加到之前没有小时信息的日期时间戳(例如 2018-06-12 00:00:00)。怎么做?

我想这样做:

$startTime = "11:45";
$startDate = 1528754400; // 2018-06-12 00:00:00

$startDate = $startDate + $startTime; //2018-06-12 11:45:00

【问题讨论】:

  • 查看并使用DateTime。给定的examples 应该会引导你做你想做的事!
  • 答案解决了您的问题吗?
  • 是的。我实际上已经使用了我的解决方案。感谢您的贡献!

标签: php string timestamp


【解决方案1】:

您可以做一些简单的数学运算并到达那里。 60 为多分钟,3600 为几小时,您将获得小时/分钟占用的秒数。

$startTime = "11:45";
$startDate = 1528754400;
$time = explode(':', $startTime);
$minutes = $time[1] * 60;
$hours = $time[0] * 3600;

然后把它拼凑起来。 (时间戳是自 1970 年以来的秒数,因此只需添加它就可以了)

$startDate + $minutes + $hours

https://3v4l.org/U2jHL

另一种方法是使用 datetime 类。

$startTime = "11:45";
list($hours, $minutes) = explode(':', $startTime);
$date = new DateTime(date('Y-m-d', 1528754400));
$date->add(new DateInterval('PT' . $hours .'H' . $minutes . 'M'));

https://3v4l.org/D51XB

【讨论】:

  • 我强烈不建议在字符串的基础上使用日期/时间。
  • @Jeff 我添加了日期时间方法,但它仍然基于字符串方法。 $startTime 不能直接传入,因为函数不知道是小时/分钟,还是分钟/秒,对吧,还是有办法定义字符串的结构?
  • 是的,你是对的,我们必须从那个字符串中取出小时和分钟。
【解决方案2】:

刚刚使用strtotime 遇到了这个问题:

$startTime = "11:45";
$startDate = 1528754400; // 2018-06-12 00:00:00
$startTimeTmp = explode(":",$startTime);

$finalTimestamp = strtotime("+".$startTimeTmp[0]." hours ".$startTimeTmp[1]." minutes", $startDate);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多