如何从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/2018M 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
相关产品推荐
相关产品推荐

