无法格式化我的日期以在 php [duplicate] 中正常工作

Failing to format my date to work correctly in php [duplicate]

提问人:Jacco 提问时间:9/7/2023 更新时间:9/7/2023 访问量:40

问:

在处理发送日期的 PHP 表单时,我从输入表单创建时间/日期。(jQuery DatePicker)

$dateinput = $_POST['datepicker'];
$t1 = date_create($dateinput);
//times are posted seperate and stipped from a input box (either 1055 or 10:55)
$t1_hour = substr($t1_raw,0,2);
$t1_min = substr($t1_raw,-2);

$t1->add(new DateInterval('PT' . $t1_hour . 'H'));
$t1->add(new DateInterval('PT' . $t1_min . 'M'));

print_r($t1);

这一切似乎都奏效了

DateTime Object ( [date] => 2023-09-04 10:55:00.000000 [timezone_type] => 3 [timezone] => Europe/Amsterdam )

但是当我尝试拉出 yaer 的日期时,它无法处理这些数据并且没有返回任何内容。

echo date('z',$t1);

我可以打印信息

$datetime_1 = date_format($t1, 'm-d-Y H:i'); 
echo $datetime_1;

也工作和返回: 09-04-2023 10:55

echo('z',$datetime_1);

返回 0

我在哪里忽略了什么?

print_r(getDate($datetime_1));

不知何故完全坏了

Array ( 
[seconds] => 9 
[minutes] => 0 
[hours] => 1 
[mday] => 1 
[wday] => 4 
[mon] => 1 
[year] => 1970 
[yday] => 0 
[weekday] => Thursday 
[month] => January 
[0] => 9 
)
php 日期时间

评论

1赞 esQmo_ 9/7/2023
我想问题是日期函数期望第二个参数是 Unix 时间戳,但您正在向它传递一个 DateTime 对象。若要从 DateTime 对象获取一年中的某一天,可以改用 DateTime 对象的 format 方法。
1赞 ADyson 9/7/2023
如果您有一个 DateTime 对象(您有),只需使用其函数,而不是独立使用。php.net/manual/en/datetime.format.php->format()date()
0赞 mickmackusa 9/9/2023
@Jacco 我建议清理数据有效负载,以便时间值一致。您可以将所有数据馈送到 datetime 对象实例化中,而不是稍后添加时间组件。3v4l.org/S8ZZO

答:

1赞 esQmo_ 9/7/2023 #1
$dateinput = $_POST['datepicker'];
$t1 = date_create($dateinput);
//times are posted seperate and stipped from a input box (either 1055 or 10:55)
$t1_hour = substr($t1_raw,0,2);
$t1_min = substr($t1_raw,-2);

$t1->add(new DateInterval('PT' . $t1_hour . 'H'));
$t1->add(new DateInterval('PT' . $t1_min . 'M'));

print_r($t1);

// HERE: Use the format method of the DateTime object to get the day of the year
echo $t1->format('z');

编辑: 从我的评论中复制,我解释了我认为可能导致问题的原因:

我想问题是日期函数期望第二个参数是 Unix 时间戳,但您正在向它传递一个对象。若要从对象中获取一年中的某一天,可以改用对象的 format 方法。DateTimeDateTimeDateTime