EmperorNortonCommands/lib/Ddate is an almost faithful recreation of the ddate command formerly provided by the util-linux standard package of the Linux operating system in PHP. It converts Gregorian to Discordian dates.
The easiest way to use the library in your project is to install it by adding it as a dependency to your project's composer.json file.
$ composer require ddate/ddate "^1.1"
If you want to call the library via the command line or use it in a shell script downloading the PHAR file from the releases page can be convenient. Everything is contained in a single file that can be called from the command line and you can pass parameters as command line arguments (see below for details). You can invoke ddate from the command line by executing the file in the directory to which it was downloaded:
$ ./ddate.phar
To show the help text and format string options use:
$ ./ddate.phar --help
If you specify a locale as a second argument the format string options (see below) for the given locale will be shown:
$ ./ddate.phar --help de
Starting with release 1.1.4, the PHAR file is built from the release tag by GitHub Actions and tested on every supported PHP version (see below). The build is signed with a GitHub artifact attestation, which proves that the file was built by this repository's workflow from the release tag and has not been altered since. You can verify it with the GitHub CLI:
$ gh attestation verify ddate.phar --repo dweichert/Ddate
PHAR files of releases up to 1.1.1 were signed with the GPG key
A6FED5506250B129 (fingerprint F1F7 A70A 51E2 D0FA 0903 65B7 A6FE D550 6250 B129) instead and can be verified with:
$ gpg --keyserver pgp.mit.edu --recv-key 0xA6FED5506250B129
$ gpg --fingerprint A6FED5506250B129
$ gpg --verify ddate.phar.asc ddate.phar
// use the class Ddate
use EmperorNortonCommands\lib\Ddate;
class Foo
{
public function foo()
{
// set $date to the current Discordian date using the default format
$ddate = new Ddate();
$date = $ddate->ddate();
// for more formatting options and setting custom dates see below
}
}
The method ddate() returns the date in Discordian date format. If called with no parameters, the current system date will be used.
If a format string is specified as the first parameter, the Discordian date will be returned in a format specified by the string. This mechanism works similarly to the format string mechanism of date(), only almost completely differently.
To show the Discordian date for another day, a Gregorian date may be specified as the second parameter of the function, in form of a day, month and year (dmY), e.g. 29022012 (for the 29th of February 2012).
The third parameter is a string serving as a locale identifier. Currently 'en' (for English) and 'de' (for German) are supported by standard formatters shipped with the library. English is the fallback should no locale be specified.
$ddate->ddate('Today is %{%A, the %e of %B%}, %Y.%N %nCelebrate %H', 18092013)
Today is Sweetmorn, the 42nd of Bureaucracy, 3179.
$ddate->ddate("It's %{%A, the %e of %B%}, %Y. %N%nCelebrate %H", 26092013)
It's Prickle-Prickle, the 50th of Bureaucracy, 3179.
Celebrate Bureflux
$ddate->ddate("Today's %{%A, the %e of %B%}, %Y. %N%nCelebrate %H", 29022016)
Today's St. Tib's Day, 3182.
$ddate->ddate("Heute ist %{%A, %e %C%}, %Y. %N%nWir feiern %H", 29022020, "de")
Heute ist St. Tibs Tag, 3186.
$ddate->ddate("%2%4Heute ist %{%A, %e %C%}, %Y. %N%nWir feiern %H", 09012018, "de")
Heute ist Prickel-Prickel, 9. der Verwirrung, 3184.
$ddate->ddate("%2%4Heute ist %{%A, %e %C%}, %Y. %N%nWir feiern %H", 10012018, "de")
Heute ist Orangewerdend, 10. der Verwirrung, 3184.
Wir feiern Rückwärtstag (reformiert) und Binärtag
$ddate->getSupportedFormatStringFields()
$ddate->getSupportedFormatStringFields("de")
Will return an array of all supported format string fields. The keys of the returned array are the format fields supported in a format string and the values provide an English description of the fields purpose.
The first optional parameter allows to specify a locale identifier, because the format string fields are locale specific.
| Version | Supported PHP Versions | Remarks |
|---|---|---|
| 1.1.x | 5.3.x - 5.6.x, 7.0.x - 7.4.x, 8.0.x - 8.5.x | Older PHP versions will be supported as long as the CI builds can be maintained.* |
| 1.0.x | -- | Version 1.0.x has reached its end of life and is no longer supported. |
* Regrettably HHVM is no longer supported, as HHVM no longer supports PHP and Composer no longer runs under HHVM, rendering the HHVM build permanently broken. Older versions of HHVM/Composer used to work, but your milage may vary.
This program is in the public domain. Distribute freely. Or not. See the file LICENSE for more details.
Hail Eris, All Hail Discordia,
Pope Rotund Deluxe
Bureflux, 3179
(last updated: Pungenday, 6th of The Aftermath, 3192)