Zend_Date-Theory.xml 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 17598 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.date.definition.theory">
  5. <title>Theorie der Arbeitsweise</title>
  6. <para>
  7. Warum gibt es nur eine Klasse <classname>Zend_Date</classname> für das Arbeiten mit Daten
  8. und Zeiten im Zend Framework ?
  9. </para>
  10. <para>
  11. Viele Sprachen teilen das Arbeiten mit Zeiten und Kalendern in zwei Klassen. Aber Zend
  12. Framework strebt nach extremer Vereinfachung und die Entwickler zu zwingen verschiedene
  13. Objekte mit verschiedenen Methoden für Zeiten und Daten zu verwenden ist in vielen
  14. Situationen eine Belastung. Da die Methoden von <classname>Zend_Date</classname> das
  15. Arbeiten mit vieldeutigen Daten unterstützen die möglicherweise nicht alle Datumsabschnitte
  16. beinhalten (Zeitalter, Jahr, Monat, Tag, Stunde, Minute, Sekunde, Zeitzone), können
  17. Entwickler die Flexibilität und die einfache Handhabung der selben Klasse und der selben
  18. Methode geniessen um die gleichen Änderungen durchzuführen (zum Beispiel Addieren,
  19. Subtrahieren, Vergleichen, Verbinden von Datumsabschnitten, und vieles mehr). Das Aufteilen
  20. der Handhabung dieser Datumsabschnitte in verschiedene Klassen würde Komplikationen
  21. hervorrufen wenn einfaches gemeinsames Arbeiten und eine kleine Lernkurve gewünscht sind.
  22. Eine einzige Klasse reduziert die Verdopplung von Code für gleichartige Arbeiten, ohne die
  23. Notwendigkeit einer komplexen Ableitungshirarchie.
  24. </para>
  25. <sect2 id="zend.date.theory.internals">
  26. <title>Internes</title>
  27. <para>
  28. <itemizedlist mark='opencircle'>
  29. <listitem>
  30. <para>
  31. UNIX Zeitpunkte
  32. </para>
  33. <para>
  34. Alle Daten und Zeiten, selbst die mehrdeutigen (z.B. kein Jahr), sind intern
  35. dargestellt in absoluten Momenten der Zeit, repräsentiert als UNIX Zeitpunkt
  36. welcher die Differenz zwischen der gewünschten Zeit und dem 01.Jänner 1970
  37. 00:00:00 <acronym>GMT</acronym>/UTC darstellt. Das ist nur deshalb möglich
  38. weil <classname>Zend_Date</classname> nicht durch UNIX Zeitpunkte limitiert
  39. ist und auch nicht durch Integer Zahlen. Die BCMath Erweiterung wird
  40. benötigt um extrem große Daten ausserhalb des Bereichs vom Freitag dem
  41. 13.Dezember 1901 20:45:54 <acronym>GMT</acronym> bis zum 19.Jänner 2038
  42. 03:14:07 <acronym>GMT</acronym> zu unterstützen. Zusätzlich können kleine
  43. Mathematikfehler aufgrund der inhärenten Beschränkungen des Float-Datentyps
  44. sowie durch Rundung auftreten, es sei denn, die BCMath Extension wird
  45. verwendet.
  46. </para>
  47. </listitem>
  48. <listitem>
  49. <para>
  50. Datumsabschnitte als Offsets in Zeitpunken
  51. </para>
  52. <para>
  53. Deswegen wird eine Objektinstanz welche drei Stunden repräsentiert
  54. ausgedrückt als drei Stunden nach dem 01.Jänner.1970 00:00:00
  55. <acronym>GMT</acronym>/UTC bzw. 0 + 3 * 60 * 60 = 10800 dargestellt.
  56. </para>
  57. </listitem>
  58. <listitem>
  59. <para>
  60. <acronym>PHP</acronym> Funktionen
  61. </para>
  62. <para>
  63. Wo es möglich ist verwendet <classname>Zend_Date</classname> normalerweise
  64. <acronym>PHP</acronym> Funktionen um die Geschwindigkeit zu erhöhen.
  65. </para>
  66. </listitem>
  67. </itemizedlist>
  68. </para>
  69. </sect2>
  70. </sect1>
  71. <!--vim:se ts=4 sw=4 et:-->