Php 如果给定一个随机的时间戳,有一种简单的方法可以得到一天的unix时间范围?

Php 如果给定一个随机的时间戳,有一种简单的方法可以得到一天的unix时间范围?,php,time,Php,Time,如果给定一个随机的时间戳,有一种简单的方法可以得到一天的unix时间范围? 我有一个类似1345547471的日期,即“2012年8月21日星期二11:11:11 GMT” 有一个php函数可以接收这样的时间戳,并返回当天的00:00小时时间戳和23:59小时时间戳 多谢各位 当然,我能做到: $time = 1345547471; $date = new DateTime; // $date->setTimezone( new DateTimeZone( "America/New_Yor

如果给定一个随机的时间戳,有一种简单的方法可以得到一天的unix时间范围? 我有一个类似1345547471的日期,即“2012年8月21日星期二11:11:11 GMT”

有一个php函数可以接收这样的时间戳,并返回当天的00:00小时时间戳和23:59小时时间戳

多谢各位

当然,我能做到:

$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将正确处理夏令时和本地时间不连续的情况。

当然,可以这样做:

$time = 1345547471;
$date = new DateTime;
// $date->setTimezone( new DateTimeZone( "America/New_York")); // Can set TZ here if needed
$date->setTimestamp( $time);
$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);
现在,您可以根据需要设置时间:

$date->setTime( 0, 0, 0); // 0h 0m 0s
并获取生成的UNIX时间戳:

$timestamp = $date->getTimestamp();
对于下一个用例,同样的事情:

$date->setTime( 23, 59, 0);
$timestamp = $date->getTimestamp();
值得注意的是,DateTime将正确处理夏令时和本地时间不连续的情况

$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);
文件:

文件:


您可以像这样使用
mod
(除法后给出余数)PHP函数来获取Unix时间戳的第一秒(即今天0:00:00)

然后使用这个unix timstamp,您可以添加86399以获得一天中的最后一秒


编辑:这不考虑dalylight的节省。

您可以使用
mod
(除法后给出余数)PHP函数获得Unix时间戳的第一秒(即今天0:00:00)

然后使用这个unix timstamp,您可以添加86399以获得一天中的最后一秒


编辑:这不考虑dalylight的节省。

如果您使用的是PHP>=5.3.0,那么您可以使用此。。。 看看这个


如果您使用的是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);
//获取今天的时间范围
$start=标准时间(日期(“Y-m-d”)“00:00:00”);
$end=标准时间(日期(“Y-m-d”)“23:59:59”);
//以人类可读的格式显示我们的日期,以便进行故障排除
回显日期(日期\u RFC1036,$start)。“
”。日期(日期\u RFC1036,$end);
如果要指定自定义时区而不是服务器timezine,可以将其添加到类似以下内容:

//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);
//获取今天的时间范围
$start=STROTIME(日期(“Y-m-d”)“00:00:00-0500”);
$end=strottime(日期:23:59:59-0500);
//以人类可读的格式显示我们的日期,以便进行故障排除
回显日期(日期\u RFC1036,$start)。“
”。日期(日期\u RFC1036,$end);

这与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);
//获取今天的时间范围
$start=标准时间(日期(“Y-m-d”)“00:00:00”);
$end=标准时间(日期(“Y-m-d”)“23:59:59”);
//以人类可读的格式显示我们的日期,以便进行故障排除
回显日期(日期\u RFC1036,$start)。“
”。日期(日期\u RFC1036,$end);
如果要指定自定义时区而不是服务器timezine,可以将其添加到类似以下内容:

//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);
//获取今天的时间范围
$start=STROTIME(日期(“Y-m-d”)“00:00:00-0500”);
$end=strottime(日期:23:59:59-0500);
//以人类可读的格式显示我们的日期,以便进行故障排除
回显日期(日期\u RFC1036,$start)。“
”。日期(日期\u RFC1036,$end);

从时间戳中获取年、月和日,并创建00小时和00分钟的时间戳,然后对23小时和59分钟进行同样的操作。我认为您感兴趣的时区并不难。从时间戳中获取年、月和日,并创建00小时和00分钟的时间戳,然后用23小时59分钟做同样的事情,我不认为你对哪个时区感兴趣有困难?@PeterSzymkowski,谢谢你,伙计,在所有这些花哨的
DateTime
课程推出之前的老把戏:)这假设一天有86400秒,但情况并非总是如此(夏令时,当地时间不连续).@nickb据我所知,unix时间戳不受leap的影响seconds@Peter-你把闰年和夏令时混淆了,这是两件不同的事情。在DST中,一天可以有23或25个小时。@PeterSzymkowski是的,但它不考虑未通过unix时间戳计算的时间,在DST期间将天缩短/延长一个小时这一年。话虽如此,我想知道
DateTime
是否准确地解释了所有的本地变化。@PeterSzymkowski谢谢你,伙计,在所有这些花哨的
DateTime
课程推出之前的老把戏:)这假设每天有86400秒,但情况并非总是如此(夏令时,当地时间不连续).@nickb据我所知,unix时间戳不受leap的影响seconds@Peter-你把闰年和夏令时混淆了,这是两件不同的事情。在DST中,一天可以有23或25个小时。@PeterSzymkowski是的,但它不考虑未通过unix时间戳计算的时间,在DST期间将天缩短/延长一个小时话虽如此,我想知道
DateTime
是否准确地解释了所有本地变化。