获取从日期到月底 PHP 的秒数
Posted
技术标签:
【中文标题】获取从日期到月底 PHP 的秒数【英文标题】:Get seconds from a date to end of month PHP 【发布时间】:2019-06-19 15:49:32 【问题描述】:从我们希望客户在一年后的月底之前付款的 sql 数据库表中提取订阅日期。订阅只是一个月内的某个日期。一年后的部分很容易,找出那个月底在哪里,并在几秒钟内将它添加到一年的部分给我带来了问题。
日期存储为从 unix 归零开始的秒数。如何找到从该值到该月月底的秒数?我尝试使用 m-i-Y
将日期值转换为实际日期
月末:
$expDate = date('m-i-Y',$row1["renewDate"]);
这行得通。我以字符串形式获得该月的最后一天。但如果我尝试:
$endOfMonth = strtotime($expDate);
没用……
echo'ing $expDate
以字符串形式显示该月的最后一天。
回显$endOfMonth
什么都不返回...
感谢您对此的任何想法。
【问题讨论】:
i
表示分钟(带前导零)。我想您希望t
找到该月的最后一天。 Docs。如果你真的想把事情精确到秒,你也必须将$expDate
强制到午夜。
【参考方案1】:
strtotime
不适用于任意日期格式。你有两个选择:
-
使用
date_create_from_format
解析自定义日期格式。
将您的字符串转换为Y-m-d
可以理解的strtotime
格式
自动。
例如:
$date = date('Y-m-t', $row1["renewDate"]);
$timestamp = strtotime($date);
附:如 cmets 所述,您应该使用 t
而不是 i
。
【讨论】:
【参考方案2】:你可以玩这样的东西。如果数据库有纪元时间,那么您可以使用“@”符号将其转换为日期。您可以通过这种方式获取订阅日期,也可以使用 m/t/Y 获取订阅月的结束日期。您可以使用 get Timestamp 将其转换回 DT,然后再转换为 UNIX 时间。看起来它适用于时间 = 1560961801。
$row1["renewDate"] = 1560961801;
$unixfromDB = $row1["renewDate"];
$date = new DateTime('@' .$unixfromDB); // your UNIX timestamp.
$subdate = $date->format( 'm/d/Y' ); // subscription date
$endmonth = $date->format( 'm/t/Y' ); // end of month date
$endmonth = DateTime::createFromFormat('m/d/Y', $endmonth);
$endmonth = $endmonth->getTimestamp(); // UNIX timestamp for end of month.
echo ($endmonth - $unixfromDB) / (60 * 60 *24); // days to end of month
【讨论】:
【参考方案3】:尝试使用mktime()
而不是strtotime()
。
<?
/* establish variables */
$now=time(); // epoch seconds right now
$expDate = date('m-t-Y', $row1["renewDate"]); //note the switch to 't' as suggested by @ehymel
$eom = mktime($expDate); // converts 'end of month' date into epoch seconds
/* results */
$secondsleft = $eom - $now; // number of seconds until the end of the month
echo $secondsleft; // return results
?>
【讨论】:
谢谢大家,是的,'i' 是一个错字... mktime($expDate) 工作(我以为我试过了...哦)...这是最简单的,可以做什么我需要。再次感谢大家! 希望您在我的回答中打勾。很高兴这对你有用。谢谢!【参考方案4】:mktime($expDate) 不幸的是没有用,至少在 CentOS6.9 中是这样。即使使用 expdate 变量,它仍然返回当前系统时间。
使用 strtotime 可以识别的日期格式 Y-m-t 确实可以正常工作。感谢 user1597430...
【讨论】:
以上是关于获取从日期到月底 PHP 的秒数的主要内容,如果未能解决你的问题,请参考以下文章