2011-12-22 58 views
18

DateTime类肯定有一些方便的方法,看起来总体上优于本机php日期函数,如strtotime,mktimestrftime(以及更多)。但是,我有什么缺点或原因,我不应该使用它?DateTime类与原生PHP日期函数

我能想到的唯一原因是创建一个类的整个实例可能比使用一个函数更昂贵。

  • 你同意吗?
  • 对我们来说简单的东西的日期时间对象是否有意义?
  • 是否还有其他缺点?

在这两个选项之间转换似乎有点混乱,所以我想清除一下我应该喜欢做的事情。

两个对我的决定的例子是:

  • 将日期的本地化值
  • 计算两个日期

回答

36

之间的时间。如果你担心的是,创建一个类实例昂贵的,它会阻碍性能,那么我恐怕你在错误的树上吠叫。一个人不应该考虑是否使用经过验证的面向对象的方法。如果为了执行某些日期计算而使用DateTime类是有意义的,那就使用它。在您的应用程序感受到它的位置上并不昂贵,除非您做了一些疯狂的事情,例如创建100万个DateTime对象。

DateTime很棒的原因是因为它通过在创建对象时指定时区来减轻夏令时的担忧。获取日期之间的差异或获取不同对象之间的间隔也很容易。它基本上减少了所需的担心和编码的数量(但我承认这有时是错误的,希望它能在5.4版PHP中得到解决)。

底线 - 我会一直使用它。

+5

加上日期范围,即使是在32位PHP环境,就足以让一个古生物学家或宇宙学家研究宇宙快乐 – 2011-12-22 15:04:26

+0

我看到了日期时间的“handyness”的开头或结尾,但将还使用它适用于我刚添加到我的问题中的那些简单的东西? – Anonymous 2011-12-22 15:07:06

+4

我会的,因为我们采用'mktime'或'strtotime'函数 - 它们需要一定的参数顺序来表示日期,年份,月份,小时等。使用'DateTime',我可以使用任意参数创建对象,例如'$ date = DateTime :: createFromFormat('m H:s D-Y',$ weird_user_input);'然后可以格式化为unix时间戳或我希望的任何其他日期格式。我甚至可以在创建对象时立即指定时区。所以是的,我肯定会使用它,因为我并不真正看到程序的方式能够帮助我更好。 – 2011-12-22 15:11:34