如果给出当天的随机时间戳,有一种简单的方法可以获得一天的unix时间范围吗?

There is a simple way to get unix time range of a day if given a random timestamp from that day ? I have a date like 1345547471 which is "Tue, 21 Aug 2012 11:11:11 GMT"

There is a php function that can receive a timestamp like this and return a 00:00 hours timestamp and a 23:59 hours timestamp of that day ?

Thank you.

You can use the mod (gives the remainder after a division) PHP function like this to get the first second of a Unix timestamp (ie, today 0:00:00)

$var=time()-(time()%86400);

Then with this unix timstamp, you can add 86399 to get the last second of the day.

Edit: This doesn't account for dalylight savings.

Sure, DateTime can do that:

$time = 1345547471;
$date = new DateTime;
// $date->setTimezone( new DateTimeZone( "America/New_York")); // Can set TZ here if needed
$date->setTimestamp( $time);

Now, you can set the time to whatever you want:

$date->setTime( 0, 0, 0); // 0h 0m 0s

And grab the resulting UNIX Timestamp:

$timestamp = $date->getTimestamp();

Same thing for the next use-case:

$date->setTime( 23, 59, 0);
$timestamp = $date->getTimestamp();

It is important to note that DateTime will properly handle cases of daylight savings time and local time discontinuities.

$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);

Documentation:

If you are using PHP >= 5.3.0 Then you can use this... Check out for this.

http://www.php.net/manual/en/datetime.createfromformat.php

This is similar to Fluffeh's answer, but accounts for daylight savings time. This is based on the server's time zone.

//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);

If you want to specify a custom timezone instead of the server timezine, you can add it to like so:

//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);

Link to working Sample