Ich bin jetzt seit 1,5 Jahren Vater und das zeigt sich deutlich darin, dass ich pünktlich bin, wenn es darum geht, PRs zusammenzuführen oder dieses Paket weiter voranzutreiben. Zeit ist hier die größte Einschränkung. Gerne gebe ich das Projekt an jemanden weiter, der mehr Zeit und Motivation hat, das Projekt voranzutreiben. Schreiben Sie mir einfach eine Nachricht. Prost!
_ _ _ __ ___ ___ _ __ ___ ___ _ __ | |_ _ __ | |__ _ __ | '_ ` _ / _ | '_ ` _ / _ '_ | __| | '_ | '_ | '_ | | | | | | (_) | | | | | | __/ | | | |_ _| |_) | | | | |_) | |_| |_| |_|___/|_| |_| |_|___|_| |_|__(_) .__/|_| |_| .__/ |_| |_|
Änderungsprotokoll
Datumsbibliothek zum Parsen, Bearbeiten und Formatieren von Datumsangaben mit i18n.
PHP 5.3 oder höher, da moment.php auf der DateTime-Klasse von PHP basiert.
Einfache Installation über Composer. Immer noch keine Ahnung, was Komponist ist? Informieren Sie sich hier.
composer require fightbulc/moment
$m = new MomentMoment(); // Standard ist „now“ UTCecho $m->format(); // zB 2012-10-03T10:00:00+0000$m = new MomentMoment('now', 'Europe/Berlin');echo $m->format(); // zB 2012-10-03T12:00:00+0200$m = new MomentMoment('2017-06-06T10:00:00', 'Europe/Berlin');echo $m->format(); // zB 2012-10-03T12:00:00+0200$m = new MomentMoment(1499366585);echo $m->format(); // zB 2017-07-06T18:43:05+0000
Moment analysiert die folgenden Datumsformate als Eingabe:
const ATOM = 'Ym-dTH:i:sP'; // 2005-08-15T15:52:01+00:00const COOKIE = 'l, dMy H:i:s T'; // Montag, 15.08.2005 15:52:01 UTCconst ISO8601 = 'Ym-dTH:i:sO'; // 2005-08-15T15:52:01+0000const RFC822 = 'D, d M y H:i:s O'; // Mo, 15. Aug. 05 15:52:01 +0000const RFC850 = 'l, dMy H:i:s T'; // Montag, 15.08.05 15:52:01 UTCconst RFC1036 = 'D, d M y H:i:s O'; // Mo, 15. Aug. 05 15:52:01 +0000const RFC1123 = 'D, d M Y H:i:s O'; // Mo, 15. Aug. 2005 15:52:01 +0000const RFC2822 = 'D, d M Y H:i:s O'; // Mo, 15. August 2005 15:52:01 +0000const RSS = 'D, d M Y H:i:s O'; // Mo, 15. August 2005 15:52:01 +0000const W3C = 'Ym-dTH:i:sP'; // 2005-08-15T15:52:01+00:00// Moment versucht auch, Daten ohne Zeitzone oder ohne Sekunden zu analysierenconst NO_TZ_MYSQL = 'Ymd H:i:s'; // 2005-08-15 15:52:01const NO_TZ_NO_SECS = 'Ymd H:i'; // 2005-08-15 15:52const NO_TIME = 'Ymd'; // 15.08.2005// Zeitanteile „.000“ werden automatisch entfernt$timeWithFraction = '2016-05-04T10:00:00.000';
Sehen Sie sich den Ordner Locales
an, um alle unterstützten Sprachen anzuzeigen. Das Standardgebietsschema ist en_GB
.
$m = new MomentMoment();echo $m->format('[Wochentag:] l'); // zB Wochentag: Mittwoch// set german localeMomentMoment::setLocale('de_DE');$m = new MomentMoment();echo $m->format('[Wochentag:] l'); // zB Wochentag: Mittwoch
Bisher unterstützte Sprachen:
ar_TN
Arabisch (Tunesien) ca_ES
Katalanisch cs_CZ
Tschechisch da_DK
Dänisch de_DE
Deutsch (Deutschland) en_CA
Englisch (Kanada) en_GB
Englisch (Britisch) en_US
Englisch (Amerikanisch) eo_EO
Esperanto es_ES
Spanisch (Europa) fa_IR
Farsi fi_FI
Finnisch fr_CA
Französisch (Kanada) fr_FR
Französisch ( Europa) hu_HU
Ungarisch id_ID
Indonesisch it_IT
Italienisch ja_JP
Japanisch kz_KZ
Kasachisch lv_LV
Lettisch (Latviešu) nl_NL
Niederländisch oc_LNC
Lengadocian pl_PL
Polnisch pt_BR
Portugiesisch (Brasilien) pt_PT
Portugiesisch (Portugal) ru_RU
Russisch (Basisversion) sv_SE
Schwedisch th_TH
Thailändisch tr_TR
Türkisch uk_UA
Ukrainisch vi_VN
Vietnamesisch zh_CN
Chinesisch zh_TW
Chinesisch (traditionell)
$m = new MomentMoment('2012-04-25T03:00:00', 'CET');echo $m->setTimezone('UTC')->format(); // 2012-04-25T01:00:00+0000
MomentMoment::setDefaultTimezone('CET');$m = new MomentMoment('2016-09-13T14:32:06');echo $m->format(); // 2016-09-13T14:32:06+0100
$m = new MomentMoment('2012-04-25T03:00:00', 'CET');echo $m->format('l, dS F Y / H:i (e)'); // Mittwoch, 25. April 2012 / 03:00 (Europa/Berlin)
Formate basieren auf der Date-Funktion und der DateTime-Klasse von PHP.
Sie können jetzt unterschiedliche Formatverarbeitungen einführen, indem Sie eine Klasse übergeben, die FormatsInterface
implementiert. Im Testordner finden Sie ein Beispiel zur Umsetzung aller Formate aus moment.js. Vielen Dank an Ashish, der sich die Zeit genommen hat, die Formate von moment.js
an die von PHP anzupassen. Schauen Sie sich das Testskript an, um das Beispiel in Aktion zu sehen.
Jeder kann Formatklassen auf die gleiche Weise schreiben. Es ist einfach und skalierbar.
// gewünschte Formatklasse abrufen// einen Moment erstellen$m = new MomentMoment('2012-04-25T03:00:00', 'CET');// formatieren mit moment.js-Definitionenecho $m->format('LLLL ', new MomentCustomFormatsMomentJs()); // Mittwoch, 25. April 2012, 3:00 Uhr
Custom formats
können auch Teil jedes Locale
sein. Wenn es für Ihr Gebietsschema noch nicht existiert, fügen Sie es hinzu. Sehen Sie sich ein Beispiel für das französische Gebietsschema an.
Schließen Sie einfach Ihren gesamten Text in []
ein und alle Zeichen werden automatisch für Sie maskiert.
$m = new MomentMoment('2012-04-25T03:00:00', 'CET');echo $m->format('[Wir sind im Monat:] F'); // Wir sind im Monat: April
Die interne Ordinalberechnung von PHP scheint fehlerhaft zu sein. Ich habe eine schnelle Lösung hinzugefügt, um dieses Problem zu beheben.
Das folgende Beispiel gibt die Woche des Jahres des angegebenen Datums aus. Es sollte 22nd
gedruckt werden:
// interne Funktiondate('WS', mktime(12, 22, 0, 5, 27, 2014)); // 22.// moment.php$m = new MomentMoment('2014-05-27T12:22:00', 'CET');$m->format('WS'); // 22
$m = new MomentMoment('2012-05-15T12:30:00', 'CET');echo $m->addHours(2)->format(); // 2012-05-15T14:30:00+0200$m = new MomentMoment('2012-05-15T12:30:00', 'CET');echo $m->subtractDays(7)->subtractMinutes(15 )->format(); // 2012-05-08T12:15:00+0200$m = new MomentMoment('@1401443979', 'CET'); // Unix Timeecho $m->subtractDays(7)->subtractMinutes(15)->format(); // 23.05.2014T09:44:39+0000
Manchmal ist es nützlich, einen bestimmten Moment zu nutzen und damit zu arbeiten, ohne den Ursprung zu ändern. Verwenden Sie dazu cloning()
.
$m = new MomentMoment('2012-05-15T12:30:00', 'CET');$c = $m->cloning()->addDays(1);echo $m->getDay(); // 15echo $c->getDay(); // 16
Alternativ können Sie den unveränderlichen Modus auf dem Ursprung aktivieren.
$m = new MomentMoment('2012-05-15T12:30:00', 'CET', true);$c = $m->addDays(1);echo $m->getDay(); // 15echo $c->getDay(); // 16// Sie können den unveränderlichen Modus auch nach der Erstellung ändern:$m->setImmutableMode(false)->subtractDays(1);echo $m->getDay(); // 14
Im unveränderlichen Modus rufen alle Änderungsmethoden implizit cloning()
auf, bevor sie ihre Änderungen anwenden.
Hinzufügen | Subtrahieren |
---|---|
addSeconds($s) | subtractSeconds($s) |
addMinutes($i) | subtractMinutes($i) |
addHours($h) | subtractHours($h) |
addDays($d) | subtractDays($d) |
addWeeks($w) | subtractWeeks($w) |
addMonths($m) | subtractMonths($m) |
addYears($y) | subtractYears($y) |
Setter | Getter |
---|---|
setSecond($s) | getSecond() |
setMinute($m) | getMinute() |
setHour($h) | getHour() |
setDay($d) | getDay() |
setMonth($m) | getMonth() |
setYear($y) | getYear() |
-- | getQuarter() |
$m = new MomentMoment('2013-02-01T07:00:00');$momentFromVo = $m->fromNow();// oder ab einem bestimmten Moment$m = new MomentMoment('2013-02-01T07: 00:00');$momentFromVo = $m->from('2011-09-25T10:00:00');// Ergebnis kommt als Wertobjekt classecho $momentFromVo->getDirection() // "future"echo $momentFromVo->getSeconds() // -42411600echo $momentFromVo->getMinutes() // -706860echo $momentFromVo->getHours() // -11781echo $momentFromVo->getDays() // -490.88echo $momentFromVo->getWeeks() // -70.13echo $momentFromVo->getMonths() // -17.53echo $momentFromVo- >getYears() // -1.42echo $momentFromVo->getRelative() // in einem Jahr
Manchmal ist es hilfreich, die Periodengrenzen eines bestimmten Datums zu ermitteln. Zum Beispiel für den Fall, dass heute Mittwoch ist und ich die Start-/Enddaten der heutigen Woche benötige. Zulässige Zeiträume sind week
, month
und quarter
.
$m = new MomentMoment('2013-10-23T10:00:00');$momentPeriodVo = $m->getPeriod('week');// Ergebnisse kommen sowie ein Wertobjekt classecho $momentPeriodVo->getStartDate( ) ->format('Ymd'); // 21.10.2013echo $momentPeriodVo->getEndDate() ->format('Ymd'); // 27.10.2013echo $momentPeriodVo->getRefDate() ->format('Ymd'); // 23.10.2013echo $momentPeriodVo->getInterval(); // 43 = Woche des Jahres
Gleiches Verfahren für monatliche und vierteljährliche Zeiträume:
$momentPeriodVo = $m->getPeriod('month');$momentPeriodVo = $m->getPeriod('quarter');
Die Kalenderzeit zeigt die Zeit relativ zum now
an, jedoch etwas anders als Moment::fromNow()
. Moment::calendar()
formatiert ein Datum mit unterschiedlichen Zeichenfolgen, je nachdem, wie nah das Datum am heutigen Tag liegt.
(new MomentMoment('2014-03-30T16:58:00', 'CET'))->subtractDays(6)->calendar(); // letzte Woche(new MomentMoment('2014-03-30T16:58:00', 'CET'))->subtractDays(1)->calendar(); // gestern(new MomentMoment('2014-03-30T16:58:00', 'CET'))->calendar(); // today(new MomentMoment('2014-03-30T16:58:00', 'CET'))->addDays(1)->calendar(); // morgen(neuer MomentMoment('2014-03-30T16:58:00', 'CET'))->addDays(3)->calendar(); // nächste Woche(new MomentMoment('2014-03-30T16:58:00', 'CET'))->addDays(10)->calendar(); // alles andere
Zeit | Anzeige |
---|---|
Letzte Woche | Letzten Montag um 15:54 |
Am Tag zuvor | Gestern um 15:54 |
Am selben Tag | Heute um 15:54 |
Am nächsten Tag | Morgen um 15:54 |
Die nächste Woche | Mittwoch um 15:54 |
Alles andere | 04.09.2014 |
Hinweis: Verwenden Sie $moment->calendar(false)
um die Uhrzeit at 00:00
wegzulassen.
Gleicher Vorgang wie bei moment.js: Mutiert den ursprünglichen Moment, indem er auf den Anfang/das Ende einer Zeiteinheit gesetzt wird.
$m = new MomentMoment('20140515T10:15:23', 'CET');$m->startOf('year'); // auf den 1. Januar um 00:00 Uhr dieses Jahres setzen$m->startOf('quarter'); // auf den Anfang des aktuellen Quartals setzen, 1. Tag des Monats, 00:00$m->startOf('month'); // auf den Ersten dieses Monats setzen, 00:00$m->startOf('week'); // auf den ersten Tag dieser Woche setzen, 00:00$m->startOf('day'); // heute auf 00:00 setzen$m->startOf('hour'); // auf jetzt setzen, aber mit 0 Minuten, 0 Sekunden$m->startOf('minute'); // auf jetzt setzen, aber mit 0 Sekunden$m->endOf('year'); // auf den 31. Dezember, 23:59 Uhr dieses Jahres gesetzt$m->endOf('quarter'); // auf das Ende des aktuellen Quartals setzen, letzten Tag des Monats, 23:59$m->endOf('month'); // auf den letzten dieses Monats setzen, 23:59$m->endOf('week'); // auf den letzten Tag dieser Woche setzen, 23:59$m->endOf('day'); // heute auf 23:59 setzen$m->endOf('hour'); // auf jetzt setzen, aber mit 59 Minuten, 59 Sekunden$m->endOf('minute'); // auf jetzt setzen, aber mit 59 Sekunden
Hinweis: Ich habe den second
ignoriert, da es sich nicht um Millisekunden handelt.
Für einen meiner Kunden musste ich Momente nach ausgewählten Wochentagen erfassen. Die Aufgabe war: Geben Sie mir die Termine für Tuesdays
und Thursdays
für die nächsten drei Wochen. Also habe ich einen kleinen Handler hinzugefügt, der genau das tut. Als Ergebnis erhalten Sie ein mit Moment Objects
gefülltes Array.
// 1 - 7 = Mo - Sun$weekdayNumbers = [2, // tuesday4, // donnerstag];$m = new MomentMoment();$dates = $m->getMomentsByWeekdays($weekdayNumbers, 3);// $ date = [Moment, Moment, Moment ...]
Sie können nun das Ergebnis durchgehen und es formatiert in ein Dropdown-Feld einfügen oder wo immer Sie es benötigen.
Versuchen Sie, nützliche Methoden von moment.js zu portieren
Fügen Sie Unit-Tests hinzu
hinzugefügt:
Unterstützung für PHP 8.2 #218
Unterstützung für PHP 8.3 #227
behoben:
Französisches Gebietsschema
Kanadische Tests
hinzugefügt:
Esperanto-Gebietsschema
Kasachisches Gebietsschema
behoben:
DateTime::createFromFormat-Signaturübereinstimmung
hinzugefügt:
Farsi-Gebietsschema
hinzugefügt:
Codeüberprüfungen für GH-Aktionsworkflows
Kanadisches Gebietsschema für Englisch/Französisch
behoben:
mit ein paar PRs zusammenführen (Danke!)
hinzugefügt:
Beenden Sie das Gebietsschema
behoben:
Schwedisches Gebietsschema
aktualisiertes italienisches Gebietsschema
hinzugefügt:
Benutzerdefinierte Formate für en_US
Flag zum Laden eines ähnlichen Gebietsschemas
Typehint-Problem behoben
behoben:
Fehlendes relativeTime-Format
Erlaube 9-stellige Unixzeit
RFC2822 als gültiges Format behoben
feste relative Zeit
Norwegisches Gebietsschema hinzugefügt
Korrekturen und Gebietsschema-Ergänzungen (siehe Commits für den 22.11.2018)
behoben:
Okzitanischer Schauplatz
behoben:
Problem mit dem russischen Gebietsschema
hinzugefügt:
Portugiesisch (pt_PT)
behoben:
Wochentagsbestellung mit ungarischem Gebietsschema
hinzugefügt:
Erlaube die Initialisierung von Moment mit Unix-Zeitstempel ohne führendes @
behoben:
Korrigieren Sie das Format von „LLL“ in benutzerdefinierten Formaten
behoben:
Nur die Syntax von php5.4+ wurde entfernt
behoben:
Dänische Tages- und Monatsnamen mit korrekter Groß- und Kleinschreibung
Französisches Gebietsschema
PHPDocs
hinzugefügt:
Konstanten für NO_TZ_MYSQL
, NO_TZ_NO_SECS
und NO_TIME
beim Parsen von Datumsangaben
hinzugefügt:
Niederländisches benutzerdefiniertes Format
behoben:
Russisches Gebietsschema
hinzugefügt:
Türkisches Gebietsschema
behoben:
Lengadocian-Gebietsschema
behoben:
PHP7.1 setTime erfordert $microseconds
hinzugefügt:
Ukrainisches Gebietsschema
hinzugefügt:
Ungarisches Gebietsschema
behoben:
Lengadocian-Gebietsschema
hinzugefügt:
Vietnamesisches Gebietsschema
Lengadocian-Gebietsschema
hinzugefügt:
Standardzeitzone ändern
behoben:
FormatsInterface-Dokumente
hinzugefügt:
Arabisches Gebietsschema
Benutzerdefiniertes Format auf Gebietsschemaebene
behoben:
Russisches Gebietsschema
hinzugefügt:
Russische Gebietsschematests
behoben:
Polnisches Gebietsschema
Berechnung von Sekunden
behoben:
Russisch: mehr relative Zeitfixes
behoben:
Relative Zeit des russischen Gebietsschemas: Tagesbearbeitung
behoben:
fehlende unveränderliche Handhabung
behoben:
Verbessertes polnisches Gebietsschema (Nominativ hinzugefügt)
behoben:
Chinesisches Gebietsschema
Akzeptierte Formate zur README-Datei hinzugefügt
behoben:
Thailändisches Gebietsschema
hinzugefügt:
Katalanisches Gebietsschema
behoben:
Polnischer Gebietsschematest
hinzugefügt:
Russisches Gebietsschema
behoben:
Polnischer Gebietsschematest
hinzugefügt:
Unveränderlicher Modus
behoben:
Polnisches Gebietsschema
hinzugefügt:
Polnisches Gebietsschema
hinzugefügt:
Indonesisches Gebietsschema
hinzugefügt:
Japanisches Gebietsschema
behoben:
Tippfehler im niederländischen Gebietsschema
hinzugefügt:
Niederländisches Gebietsschema
hinzugefügt:
Schwedisches Gebietsschema
hinzugefügt:
Dänisches Gebietsschema
behoben:
Fester Beginn/Ende des Wochentags für das rumänische Gebietsschema
behoben:
Hinzufügen eines Trennzeichens zum italienischen Gebietsschema
behoben:
Rückgabe einer neuen Instanz für startOf/endOf für Woche, Monat, Quartal
hinzugefügt:
Gebietsschema Tschechisch
hinzugefügt:
calendar
erhält als Abschluss die folgenden Parameter function(Moment $m) {}
relativeTime
Gebietsschema empfängt als Abschluss die folgenden Parameter function($count, $direction, Moment $m) {}
hinzugefügt:
Die Übergabe von Schließungen an das Gebietsschema (Kalender, RelativeTime) wurde korrigiert.
Stellen Sie die korrekten deutschen Gebietsschemainformationen ein
hinzugefügt:
Thailändische Gebietsschema-Strings korrigiert
hinzugefügt:
Lokales traditionelles Chinesisch
hinzugefügt:
Gebietsschema Chinesisch
Der Ordinalformatierer empfängt nun das token
, z. B. das Token in dS
ist d
Behoben: Englisches Ordnungsproblem für Zahlen zwischen 11 und 13
hinzugefügt: Gebietsschema Italienisch
Behoben: Englisches Ordnungsproblem
hinzugefügt: Gebietsschema Portugiesisch
behoben:
Gebietsschema zeigte falschen Monatsnamen an (#34)
Die Reihenfolge der Wochentage in den Gebietsschemadateien wurde geändert
hinzugefügt:
getWeekdayNameLong()
getWeekdayNameShort()
getMonthNameLong()
getMonthNameShort()
hinzugefügt:
Gebietsschema: Thailändisch
hinzugefügt:
getMonths()
getYears()
getRelative()
Gebietsschema
MomentFromVo:
behoben:
getSeconds() zeigt nun auch die Richtung an
MomentFromVo:
behoben:
Zeitzonenproblem, das nur für Unixtime-Daten auftrat
andere:
Richtung kehrt jetzt zurück: „Zukunft“ (-) / „Vergangenheit“ (+)
Zeitwerte werden jetzt in Gleitkommazahlen umgewandelt
MomentFromVo:
behoben:
Unbekannte Zeitzone beim Erstellen eines Moments
hinzugefügt:
getMomentsByWeekdays()
getWeekday()
getWeekOfYear()
andere:
maskierter Text
hinzugefügt:
Beispielsweise wird [Hello World]
automatisch in Hello World
umgewandelt
z. B. WS
für die 21. Woche des Jahres zeigt jetzt die korrekte 21th
usw.
Ermitteln Sie den Zeitraum für ein bestimmtes Quartal in einem bestimmten Jahr
week
= Woche des Jahres
month
= Monat des Jahres
quarter
= Viertel des Jahres
Erstellen Sie einen neuen veränderlichen Moment basierend auf der gegebenen Instanz
startOf und endOf wie von moment.js implementiert
Ermitteln Sie den Viertelzeitraum eines bestimmten Datums
setDay()
getDay()
setMonth()
getMonth()
setYear()
getYear()
getQuarter()
setSecond()
getSecond()
setMinute()
getMinute()
setHour()
getHour()
Klonen() hinzugefügt
getInterval()
zu MomentPeriodVo
hinzugefügt, um das Intervall des angegebenen Zeitraums anzugeben
Eine statische Klasse MomentHelper
hinzugefügt
PHPs interne Ordinalberechnung korrigiert (auch in Kombination mit moment.js-Formatierung)
Sie können jetzt Text maskieren, indem Sie ihn in []
einschließen.
ENTFERNT:
hinzufügen()
subtrahieren()
hinzugefügt:
Kalenderformat, wie es von moment.js implementiert wird
behoben:
Inkompatibilität mit PHP 5.3
hinzugefügt:
Testen Sie auf Datumsangaben im Format YYYY-mm-dd
und YYYY-mm-ddTHH:ii:ss
löst bei ungültigen Daten eine MomentException aus
Ausnahme wird als MomentException
ausgelöst
Datumsvalidierung bei Instanziierung:
addSeconds()
addMinutes()
addHours()
addDays()
addWeeks()
addMonths()
addYears()
subtractSeconds()
subtractMinutes()
subtractHours()
subtractDays()
subtractWeeks()
subtractMonths()
subtractYears()
veraltet:
hinzufügen()
subtrahieren()
Die Betreuer dieses Projekts empfehlen, dem Beitragsleitfaden zu folgen.
Moment.php ist unter den Bedingungen der MIT-Lizenz frei vertreibbar.
Copyright (c) 2017 Tino Ehrich
Hiermit wird jeder Person, die eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die „Software“) erhält, kostenlos die Erlaubnis erteilt, mit der Software ohne Einschränkung zu handeln, einschließlich und ohne Einschränkung der Rechte zur Nutzung, zum Kopieren, Ändern und Zusammenführen , Kopien der Software zu veröffentlichen, zu verteilen, unterzulizenzieren und/oder zu verkaufen und Personen, denen die Software zur Verfügung gestellt wird, dies zu gestatten, vorbehaltlich der folgenden Bedingungen:
Der obige Urheberrechtshinweis und dieser Genehmigungshinweis müssen in allen Kopien oder wesentlichen Teilen der Software enthalten sein.
DIE SOFTWARE WIRD „WIE BESEHEN“ ZUR VERFÜGUNG GESTELLT, OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND NICHTVERLETZUNG. IN KEINEM FALL SIND DIE AUTOREN ODER URHEBERRECHTSINHABER HAFTBAR FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN ODER ANDERE HAFTUNG, WEDER AUS EINER VERTRAGLICHEN HANDLUNG, AUS HANDLUNG ODER ANDERWEITIG, DIE SICH AUS, AUS ODER IN ZUSAMMENHANG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN HANDELN IN DER SOFTWARE ERGEBEN SOFTWARE.