2016-12-01 99 views
2

我正在使用此代码在php中获取当前的unix时间。今天在特定时间的Unix时间戳

echo time(); 

,它是给我这个结果

1480578383 

如果我转换这可读日期,那么这将是

Thu, 01 Dec 2016 07:46:23 GMT 

好吧,我不希望出现这种情况。我想要的是一个功能,可以给我今天的日期,具体时间是23:00:00。

当我将其转换为可读的日期,那么它应该是

Thu, 01 Dec 2016 23:00:00 GMT 

“星期四,2016年12月1日”是当前日期。

+1

具体时间是什么意思?你给的例子和你不想要的例子一样吗?请澄清。谢谢! – Ronald

+0

如果您的位置在23:00,请修复unix机器的时钟。如果在您所在的位置7:46,则该功能运行良好。如果你想在当前的日期和其他任何时间,你可以做'(time()/ 86400)* 86400'去除时间,然后加上'23 * 60 * 60'。 – Holger

+0

'echo(new DateTime(“23:00”)) - > format('r');' –

回答

1

我会做出这样的假设规范是:

今天获得在23时00分〇〇秒在当前时区

代码应该是这样的:

mktime(23, 0, 0); 

...或:

strtotime('today 23:00:00') 

...或者只是:

strtotime('23:00:00') 

Test code

$time_zones = array(
    'America/Chicago', 
    'GMT', 
    'Europe/Berlin', 
); 
foreach($time_zones as $time_zone){ 
    date_default_timezone_set($time_zone); 
    $t1 = mktime(23, 0, 0); 
    $t2 = strtotime('today 23:00:00'); 
    $t3 = strtotime('23:00:00'); 
    echo date('r', $t1) . '/' . date('r', $t2) . '/' . date('r', $t3) . PHP_EOL; 
} 
Fri, 02 Dec 2016 23:00:00 -0600/Fri, 02 Dec 2016 23:00:00 -0600/Fri, 02 Dec 2016 23:00:00 -0600 
Fri, 02 Dec 2016 23:00:00 +0000/Fri, 02 Dec 2016 23:00:00 +0000/Fri, 02 Dec 2016 23:00:00 +0000 
Fri, 02 Dec 2016 23:00:00 +0100/Fri, 02 Dec 2016 23:00:00 +0100/Fri, 02 Dec 2016 23:00:00 +0100 

mktime()strtotime()手册页找到进一步的细节。

+0

我也可以使用它,但它的工作。我必须使用date_default_timezone_set函数来设置时区。有没有一种方法可以在不使用date_default_timezone_set函数的情况下得到正确的日期。 –

+0

这只是一种**测试代码正常工作**的方法。每次使用代码时都不必运行测试。您可以复制并粘贴第一行代码,并忽略“测试代码”句子下面的所有内容。对我来说 –

+0

它不能正常工作。它显示22小时代替23小时 –