如果给定当天的随机时间戳,有一种简单的方法可以获取一天的 unix 时间范围?我有一个像 1345547471 这样的日期,即“星期二,2012 年 8 月 21 日 11:11:11 GMT”
有一个 php 函数可以接收这样的时间戳并返回当天的 00:00 小时时间戳和 23:59 小时时间戳?
谢谢你。
当然,DateTime可以做到这一点:
$time = 1345547471;
$date = new DateTime;
// $date->setTimezone( new DateTimeZone( "America/New_York")); // Can set TZ here if needed
$date->setTimestamp( $time);
现在,您可以将时间设置为您想要的任何时间:
$date->setTime( 0, 0, 0); // 0h 0m 0s
并获取生成的 UNIX 时间戳:
$timestamp = $date->getTimestamp();
下一个用例也是如此:
$date->setTime( 23, 59, 0);
$timestamp = $date->getTimestamp();
重要的是要注意 DateTime 将正确处理夏令时和本地时间不连续的情况。
您可以使用这样的mod
PHP 函数(在除法后给出余数)来获取 Unix 时间戳的第一秒(即今天 0:00:00)
$var=time()-(time()%86400);
然后使用这个 unix 时间戳,您可以添加 86399 以获得当天的最后一秒。
编辑:这不考虑日光节约。
$ts = 1345547471;
$ts_00_00 = mktime(0,0,0, date("m", $ts), date("d",$ts), date("Y",$ts);
$ts_23_59 = mktime(23,59,59, date("m", $ts), date("d",$ts), date("Y",$ts);
文档:
如果您使用的是 PHP >= 5.3.0 那么您可以使用这个...检查一下。
这类似于 Fluffeh 的回答,但考虑了夏令时。这基于服务器的时区。
//Get time range for today
$start = strtotime(date("Y-m-d")." 00:00:00");
$end = strtotime(date("Y-m-d")." 23:59:59");
//Show our date in a human-readable format for troubleshooting
echo date(DATE_RFC1036,$start)."<br>".date(DATE_RFC1036,$end);
如果你想指定一个自定义时区而不是服务器时区,你可以像这样添加它:
//Get time range for today
$start = strtotime(date("Y-m-d")." 00:00:00 -0500");
$end = strtotime(date("Y-m-d")." 23:59:59 -0500");
//Show our date in a human-readable format for troubleshooting
echo date(DATE_RFC1036,$start)."<br>".date(DATE_RFC1036,$end);