Zend_Date-Theory.xml 3.7 KB

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