PHP:strftime()、date() 或 DateTime,哪个更好?
Posted
技术标签:
【中文标题】PHP:strftime()、date() 或 DateTime,哪个更好?【英文标题】:PHP: strftime(), date() or DateTime, Which is better? 【发布时间】:2011-08-21 22:02:05 【问题描述】:我很想知道在 php 中使用strftime()
是否比date()
有任何优势,反之亦然。
我下载的一个类使用了strftime()
。但是,由于它在某些系统上不支持所有时间格式,因此我想将其更改为使用 date()
。我想知道使用其中一种是否有任何重大差异或优势。
strftime()
仅支持该服务器 c 库支持的日期格式这一事实呢? date()
有类似的限制吗?
【问题讨论】:
还有另一种选择,DateTime
。
非常小的性能差异...很小
@Pekka 要简单地找出时间或日期,为什么要使用DateTime
而不是date()
或strftime()
?
@Pekka, @Chaim DateTime 包装了其他函数(strtotime()、date()、date_diff() 等)的功能。在很多情况下,OO DateTime 代码比使用“旧”函数更简洁。
@James 不,DateTime
不仅仅是一个包装器 - 它在内部使用 64 位日期,因此可以处理任何类型的日期(不仅是 1902/1970 到 2038)@Chaim 更快?除非您计划为每个请求计算数千或数十万个日期,否则这不会对现实世界产生任何影响。
【参考方案1】:
在 PHP 中使用有什么优势 strftime() 超过 date()
来自date manual page:
要格式化其他语言的日期, 你应该使用setlocale() 和 strftime() 函数代替 日期()。
【讨论】:
也就是说,如果我只使用英语,那么 date() 就足够了,或者更好? 但这可能需要一段时间,您的应用程序中将需要 i18n。使用 strftime() 方式,您已准备就绪。【参考方案2】:我想你会发现date()
比strftime()
使用更广泛
date()
只能返回英文的月/日名称,无法为您提供其他语言的翻译。
性能影响应该可以忽略不计。
如果您决定采用日期路线,我真的建议您使用DateTime
,这使得大多数与日期和时间相关的操作比使用原始程序函数更容易。
【讨论】:
以上是关于PHP:strftime()、date() 或 DateTime,哪个更好?的主要内容,如果未能解决你的问题,请参考以下文章
Rails:如何构建每天/每月/每年的统计数据或如何缺少与数据库无关的 SQL 函数(例如:STRFTIME、DATE_FORMAT、DATE_TRUNC)