带strtotime的php unix时间戳

时间:2019-04-12 01:44:08

标签: php unix timestamp strtotime

我开始学习PHP,非常清楚,我在这里犯了一些错误,我尝试获取一天中特定小时和分钟的Unix时间戳:

 <?php
 date_default_timezone_set('America/Argentina/Buenos_Aires');
 $data = new DateTime();
 $datafmt = $data->format('Y-m-d');
 echo strtotime($datafmt,'18:30:00');
 ?>

代码返回1554951600并等于:

GMT: Thursday, April 11, 2019 3:00:00 AM
Your time zone: Thursday, April 11, 2019 12:00:00 AM GMT-03:00

这是错误的,时间戳记应该是:
  1555018200等于:

GMT: Thursday, April 11, 2019 9:30:00 PM
Your time zone: Thursday, April 11, 2019 6:30:00 PM GMT-03:00

我做错了什么?


已修复!

echo strtotime($datafmt. '18:30:00');   

,而不是.,这是我的错误!

2 个答案:

答案 0 :(得分:1)

您根本不需要strtotime()DateTime类是一种功能,功能更强大。只需将时间传递给构造函数或使用方法setTime()

进行设置即可
<?php
date_default_timezone_set('America/Argentina/Buenos_Aires');
$data = new DateTime('18:30:00');
// Alternative ways to set the time of the DateTime object
// $data->setTime('18', '30', '00');
// $data->setTime(...explode(':', '18:30:00'));
$datafmt = $data->format('U'); // U means UNIX timestamp
echo $datafmt;

答案 1 :(得分:-1)

您可以这样尝试:

//your code
echo strtotime($datafmt. ' 18:30:00'); //change comma (,) with dot (.)

OR

date_default_timezone_set('America/Argentina/Buenos_Aires');
$data = new DateTime("18:30:00");
$datafmt = $data->format('U');
echo $datafmt;