如何将日期时间转换为字符串?

3
我有一个DateTime对象的数组,需要在函数调用中使用它们作为字符串。我尝试像这样进行转换:$string_datetime = (string)$myDateTimeObject;但是它不起作用。搜索也没有结果,因为大多数人都在问如何将字符串转换为DateTime,而不是相反。
我的代码:
$start_date = new DateTime();
$end_date = new DateTime();
$end_date = $end_date->modify('+1 day');

// Add time range to request
$request['time_range'] = Array ( 'start' => $start_date,
                                 'end'   => $end_date);

在调用一个期望字符串的函数(它是一个API调用)时,我收到了这个错误:

可捕获的致命错误:无法将DateTime类的对象转换为字符串

从DateTime对象中转换/提取字符串的正确方法是什么?

1个回答

6

1
不要误解我的意思,但请查阅文档:http://www.php.net/manual/zh/book.datetime.php - Matt Ball
2
似乎DateTime不能被隐式转换为字符串有些疏忽了。个人而言,我使用一个扩展它并添加__toString()方法(使用DateTime:: format())的包装类。在我看来,仍应该是本地功能。 - FtDRbwLXw6
@MattBall:当然,PHP是一种不完美的语言 - 所有其他语言也都是如此。 PHP之所以声名狼藉,只是因为过去发生了许多合理但完全微不足道的错误,由于向后兼容性问题而尚未修复(例如,不一致的参数顺序、函数命名等)。 - FtDRbwLXw6
@Drrcknlsn,我认为你可以扩展它添加一个字符串转换函数,这是完全可以的。由于有很多输出日期的方式,因此我认为他们知道如何设置输出的唯一方式可能是一些不直观的事情,例如设置静态DateTime类变量,并且我觉得依赖php.ini设置将是一个非常糟糕的想法= p。强制使用__toString()进行扩展是开发人员明智的决定,它允许您根据自己的需求DRY实现。我的意思是,当随意调用__toString()时,您期望发生什么? - Anther
推荐阅读:http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/ - Rubens Mariuzzo
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接