2011-12-22 27 views
18

La clase DateTime tiene algunos métodos útiles y parece en general superior a las funciones nativas de fecha php como strtotime, mktime y strftime (y más). ¿Pero hay algún inconveniente o una razón por la que no debería usarlo?Clase DateTime frente a funciones de fecha PHP nativas

La única razón por la que puedo pensar es que podría ser más costoso crear una instancia completa de una clase que simplemente usar una función.

  • ¿Estás de acuerdo con eso?
  • ¿Tiene algún sentido para nosotros un objeto DateTime para cosas simples?
  • ¿Hay algún otro inconveniente?

Parece un poco confuso para cambiar entre esas dos opciones todo el tiempo, por lo que me gustaría tener autorización lo que preferiría hacer.

Dos ejemplos para mi decisión serían:

  • La conversión de una fecha a un valor localizado
  • Calcular el tiempo entre dos fechas

Respuesta

36

Si su preocupación es que la creación de una instancia de clase es costoso y que obstaculizará el rendimiento, entonces me temo que estás ladrando en el árbol equivocado. Uno nunca debería considerar si usar el enfoque OO probado donde tenga sentido. Si tiene sentido utilizar la clase DateTime para realizar ciertos cálculos de fecha, entonces úselo. No es costoso hasta el punto en que su aplicación lo sentirá, a menos que haga algo alocado como crear 1 millón de objetos DateTime.

La razón por la que DateTime es genial es porque alivia la preocupación de los ahorros de luz al especificar el huso horario al crear el objeto. También es fácil obtener diferencias entre fechas u obtener intervalos entre diferentes objetos. Básicamente reduce la cantidad de preocupaciones y codificación requeridas (pero admitiré que a veces está mal, con suerte se tratará en la versión 5.4 de PHP).

Conclusión: siempre lo usaría.

+5

más el rango de fechas, incluso en un entorno de PHP de 32 bits, es suficiente para mantener feliz a un paleobiólogo o un cosmólogo estudiando el comienzo o el final del universo –

+0

Veo la 'manejabilidad' de DateTime, pero ¿también usaría para cosas simples como las que acabo de agregar a mi pregunta? – Anonymous

+4

Lo haría, porque tomemos las funciones 'mktime' o' strtotime' - requieren cierto orden de parámetros que representan el día, año, mes, hora, etc. Con 'DateTime' puedo crear el objeto usando parámetros arbitrarios como' $ date = DateTime :: createFromFormat ('m H: s D-Y', $ weird_user_input); 'que luego puede formatearse en la marca de tiempo de unix o en cualquier otro formato de fecha que desee. Incluso puedo especificar el huso horario inmediatamente al crear el objeto. Así que sí, definitivamente lo usaría, ya que realmente no veo en qué forma procedimental podría ayudarme mejor. –

Cuestiones relacionadas