You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从DateTime对象中获取日期?附输出示例

如何从DateTime对象中获取日期?

嘿,根据你给出的数组结构,里面的expiry字段是一个PHP DateTime对象对吧?要从中提取日期的话,我给你两种方案,但强烈推荐第一种规范做法,避免踩坑:

1. 使用官方标准的format()方法(推荐)

DateTime类提供了format()方法,这是官方指定的获取格式化日期/时间的方式,兼容性和稳定性拉满。你可以自定义输出的日期格式,比如只取年月日,或者带时间的完整格式。

结合你的数组示例,代码如下:

// 假设你的数组存储在$response变量中
$response = [
    (object)[
        'instrument_token' => 16796674,
        'exchange_token' => 65612,
        'tradingsymbol' => 'DABUR18MAR445CE',
        'name' => '',
        'last_price' => 0.05,
        'expiry' => new DateTime('2018-03-28', new DateTimeZone('asia/kolkata')),
        'strike' => 445,
        'tick_size' => 0.05,
        'lot_size' => 2500,
        'instrument_type' => 'CE',
        'segment' => 'NFO-OPT',
        'exchange' => 'NFO'
    ]
];

// 获取仅日期的格式(年-月-日)
$expiryDate = $response[0]->expiry->format('Y-m-d');
echo $expiryDate; // 输出:2018-03-28

// 如果需要带时间的完整格式
$fullDateTime = $response[0]->expiry->format('Y-m-d H:i:s');
echo $fullDateTime; // 输出:2018-03-28 00:00:00

常用的格式参数还有:

  • d/m/Y:输出类似28/03/2018
  • M j, Y:输出类似Mar 28, 2018

2. 直接访问内部date属性(不推荐)

你可能注意到DateTime对象里有个date属性,直接访问它也能拿到值:

$expiryDate = $response[0]->expiry->date;
echo $expiryDate; // 输出:2018-03-28 00:00:00.000000

但不建议这么做,因为这个date属性属于DateTime类的内部实现细节,PHP官方并没有承诺它会在未来版本中保持不变——哪天PHP更新了DateTime的内部结构,这段代码就会报错。所以尽量用官方提供的API,别依赖内部属性。

内容的提问来源于stack exchange,提问作者GOURAV CHOUDHARY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:36:33