首页 > 解决方案 > PHP strtotime 总是使用 31 天的月份

问题描述

我需要计算以人类可读格式(例如“3 个月 10 天”)表示的持续时间并将其设为时间戳。

我的问题是我的代码使用strtotime.,所以如果一个月是 30 天,PHP 会将其解释0 months 30 days31 days.

例如,我需要将字符串“1 月 10 天”转换为“31 天 10 天”(或“41 天”)。

$strToTime = strtotime($pMsg);
$unixTimestamp = $strToTime - time();
$unixTimestampM = $unixTimestamp;
$months = floor((float)$unixTimestampM/2678400);
  if($months >= 1) {
    $unixTimestampM -= $months*2678400;
  }
$days = floor((float)$unixTimestampM/86400);
  if($days >= 1) {
    $unixTimestampM -= $days*86400;
  }

依此类推几个小时和几分钟。

使用字符串“1 个月 10 天”,我希望$months1并且$days10,而在一年中的某些时期,$days成为9

标签: phpdatedatetime

解决方案


推荐阅读