如果给定一天的随机时间戳,有一种简单的方法可以获得一天的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);
文件:
- http://php.net/manual/en/function.date.php
- http://php.net/manual/en/function.mktime.php
如果你使用的是PHP>=5.3.0,那么你可以使用这个。。。看看这个。
http://www.php.net/manual/en/datetime.createfromformat.php
这与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);
工作样品的链接