ddate

Today is Boomtime, the 58th day of Bureaucracy in the YOLD 3190

Das hier vorgestellte Skript ist eine PHP Implemantation des Programms ddate. ddate konvertiert ein gregorianisches Datum in ein diskordianisches Datum.

Das Diskordianische Datumsformat ist in der Principia Discordia erstmals beschrieben worden. Es hat wie das gregorianische Jahr 365 Tage, diese Teilen sich aber auf fuenf Monate (Seasons) zu je 73 Tagen auf. Eine Woche hat fuenf Tage.

Das Skript bietet sowohl die Moeglichkeit gregorianische Daten in diskordianische zu konvertieren, als auch anders herum. Wenn man es ohne Parameter aufruft, gibt es wie sein Vorbild, das heutige diskordiansiche Datum aus. Es ist auch moeglich individuelle Formatstrings, zur gestaltung der Ausgabe des diskordianischen Datums, einzustellen.

Online Rechner

Gregorianisches Datum zu einem diskordianischen konvertieren

Das Datum muss in diesem Format eingegeben werden: [JJJJ]-[MM]-[TT] (ISO 8601).

Diskordianisches Datum zu einem gregorianischen konvertieren

Das Format sieht so aus: [YOLD]-[Monat]-[Tag].

Beispiel

Im folgende sind die Methoden der PHP Klasse an Beispielen erlaeutert.

<?php
require('ddate.php');

// Eine neue Instanz von ddate. Da sie ohne Parameter aufgerufen
// wurde, behandelt sie das aktuelle Datum
$d = new ddate();

$d->getDate();
// Gibt das aktuelle Datum zurueck. Zum Beispiel: 2009-11-16

$d->getGArray();
// Gibt das Datum als Array wider.
// Array
// (
//     [year] => 2009
//     [month] => 11
//     [day] => 16
//     [timestamp] => 1258326000
// )
// Der Timestamp wird nur zurueckgegeben, wenn es moeglich ist,
// ihn zu berechnen (bei 1002-02-23 waere dies nicht moeglich).
// Ist es nicht mieglich, beinhaktet timestamp null.

$d->getDdate();
// Gibt das diskordiansiche Datum zurueck.
// Beispielsweise: Today is Setting Orange, the 28th day of The Aftermath in the YOLD 3175

$d->getDArray();
// Array
// (
//     [yold] => 3175
//     [season] => 5
//     [day] => 28
//     [yday] => 320
//     [leapyear] => false
// )
// yday gibt die Anzahl der Tage seit Jahres Beginn an

// Mit dem folgenden Aufruf, wird ein neues Datum gesetz.
// Die oben bereits vorgestellten Methoden, geben dann Daten
// zu dem neu gesetzen Datum zurueck.
$d->setDate('2008-02-01');
$d->setDate('-1001-12-23');

$d->setDdate('3000-2-23');

$d->setFormat('%{%A, %B %d%}, %Y YOLD');
// Hiermit wird ein neues Format fuer das diskordoiansiche
// Datum bestimmt.

$d->getDdate();
// Sweetmorn, Discord 23, 3000 YOLD
?>

Sourcecode

Die aktuelle Version kann auf github heruntergeladen werden: https://github.com/stroebjo/ddate-php.

API

Die API ust unter http://jonathanstroebele.de/ddate/api/ zu erreichen, die Paramter werden ganz normal wie bei einem Querry-String angehaengt.

Die API liegt zur Zeit in der Version 0.9 vor.

Parameter

g (gregorianisches Datum)

Mittels g wird ein gregorianisches Datum als Grundlage fuer die Berechnungen festgelegt. Es wird im ISO 8601 Format uebergeben: [JJJJ]-[MM]-[TT].

Beispiele:

  • 3175-02-10
  • 2009-02-28
  • 1991-05-23
  • -1001-08-17
  • 1782-12-05
d (diskordianisches Datum)

Durch d kann ein diskordiansiches Datum als Grundlage fuer die Berechnungen gesetzt werden. Es wird in einem ISO 8601 aehnlichen Format uebergeben: [YOLD]-[Monat]-[Tag].

Beispiele:

  • 3175-2-42
  • 35-5-1
  • 4102-3-73
o (output)

o kann mit d und/oder g belegt werden. g liefert das Gregorianische Datum aus, d das diskordianische.

f (format)

Mit f kann ein Formatstring fuer das diskordianische Datum angegeben werden, zum Beispiel f=%{%A, %B %d%}, %Y YOLD (Liste der Formatbezeichner).

Der Defaulformatwert ist Today is %{%A, the %e day of %B%} in the YOLD %Y%N%nCelebrate %H.

m (modus)

Der m Parameter ermoeglicht die spezifizierung des Ausgabeformats. Der Defaultwert ist txt.

Diese Wert sind moeglich:

txt

Die Ausgabe ist eine einfache Textdatei.

http://jonathanstroebele.de/ddate/api/?o=dg
Today is Prickle-Prickle, the 27th day of The Aftermath in the YOLD 3175
2009-11-15
html

Die Ausgabe ist eine HTML Datei.

http://jonathanstroebele.de/ddate/api/?o=dg&m=html
Today is Prickle-Prickle, the 27th day of The Aftermath in the YOLD 3175<br />
2009-11-15
xml

Zusaetzlich zum formatierten Datum werden bei der XML Ausgabe noch das YOLD, der Monat, der Tag des Monats, die Tage seit Jahresbeginn und der boolische Wert, ob es sich um ein Schlatjahr handelt, als Attribute uebergeben.

Beim gregorianischen Datum wird das Jahr, der Monat und der Tag sowie, falls moeglich, der UNIX Timestamp uebergeben. Kann der Timestamp nicht erstellt werden, entahelt das Attribut timestamp den Wert null.

http://jonathanstroebele.de/ddate/api/?o=d&m=xml&f=%{%A, %B %d%}, %Y YOLD
<?xml version="1.0" encoding="utf-8" ?>
<ddate>
    <eris yold="3175" season="4" day="26" yday="318" leapyear="false">
        Prickle-Prickle, The Aftermath , 3175 YOLD
    </eris>
</ddate>
json

Verhaelt sich im Grunde genau wie die XML Ausgabe.

http://jonathanstroebele.de/ddate/api/?o=gd&m=json&g=2307-05-23
{
    "gregor" : [
        "year" : 2307,
        "month" : 5,
        "day" : 23,
        "timestamp" : null,
        "text" : "2307-05-23"
    ],
    "eris" : [
        "yold" : 3473,
        "season" : 2,
        "day" : 70,
        "yday" : 143,
        "leapyear" : false,
        "text" : "Today is Pungenday, the 70th day of Discord in the YOLD 3473"
    ]
}

Formatbezeichner

Beispiele fuer Formatstrings:

  • %{%A, %B %d%}, %Y YOLD
  • Today is %{%A, the %e day of %B%} in the YOLD %Y%N%nCelebrate %H
Formatbezeichner Beschreibung Beispiel fuer Rueckgabewerte
A Ausgeschriebener Tag der Woche Sweetmorn bis Setting Orange
a Abkuerzung des Wochentages SW bis SO
B Monat (season) Chaos bis The Aftermath
b Dreistellige Abkuerzung eines Monats Chs bis Afm
d Tag des Monats 1 bis 73
e Anhang der englischen Aufzaehlung fuer einen Monatstag, zwei Zeichen st, nd, rd oder th
H Falls der 5. oder 50. eines Monats ist, wird der entsprechende Feiertag ausgegeben Mungday bis Afflux
N Falls kein Feiertag ist, wird die Verarbeitung des Format-Strings hier abgebrochen
n Erzeugt einen Zeilenumbruch. Wenn im HTML Kontext gearbeitet wird, wird <br /> ausgegeben. Andernfalls \n <br /> oder \n
t Horizontaler Tabulator, im HTML Kontext werden vier aufeinanderfolgende geschuetzte Leerzeichen (&nbps;) ausgegeben &nbps; oder \t
Y Year of Our Lady of Discord Zum Beispiel 3175 oder 42
% Bietet die Moeglichkeit ein Prozentzeichen in die Ausgabe zu schreiben. %
{ und } Zwischen die diese beiden Bezeichner wird St. Tibs Day (der 29. Februar) geschrieben, falls das Jahr ein Schaltjahr ist, alle anderen Formatbezeicher innerhalb von { und } werden dann ignoriert. Today is %{%A, the %e day of %B%} in the YOLD %Y wird zum Beispiel in Today is Prickle-Prickle, the 27th day of The Aftermath in the YOLD 3175 uebersetzt, in einem Schaltjaht aber zu Today ist St. Tibs day in the YOLD 3166.
. (Punkt) I can only show you the door. You're the one that has to walk through it. Manche Dinge koennen nicht mit Worten ausgedrueckt werden.