<commit_before>/*
 * -----------------------------------------------------------------------
 * Copyright © 2013-2014 <NAME>, <http://www.menodata.de/>
 * -----------------------------------------------------------------------
 * This file (TimeScale.java) is part of project Time4J.
 *
 * Time4J is free software: You can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as published
 * by the Free Software Foundation, either version 2.1 of the License, or
 * (at your option) any later version.
 *
 * Time4J is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with Time4J. If not, see <http://www.gnu.org/licenses/>.
 * -----------------------------------------------------------------------
 */

package net.time4j.scale;


/**
 * <p>Defines some time scales for usage both in civil life and in science. </p>
 *
 * <p>Any conversion is usually not bijective. That means that for example
 * an UTC-timestamp can be mapped in a unique way to UT1, GPS or TAI (provided
 * that there are no negative leapseconds) but in reverse not. More important:
 * Conversions often happen in millisecond-precision or worse so they are
 * more or less like approximation procedures. </p>
 *
 * @author  <NAME>
 */
/*[deutsch]
 * <p>Definiert verschiedene Zeitskalen sowohl zur Verwendung im zivilen
 * Alltag als auch in der Wissenschaft. </p>
 *
 * <p>Konvertierverfahren sind im allgemeinen nicht bijektiv. Das bedeutet,
 * da&szlig; z.B. zwar einem UTC-Zeitpunkt meist eindeutig ein UT1-, GPS- oder
 * TAI-Zeitpunkt zugeordnet werden kann (positive UTC-Schaltsekunden
 * vorausgesetzt), umgekehrt aber nicht. Noch wichtiger: Konversionen
 * erfolgen oft in Millisekundengenauigkeit (oder schlechter), sind
 * also grunds&auml;tzlich N&auml;herungsverfahren. </p>
 *
 * @author  <NAME>
 */
public enum TimeScale {

    //~ Statische Felder/Initialisierungen --------------------------------

    /**
     * <p>Counts the seconds relative to UNIX-epoch 1970-01-01T00:00:00Z
     * which is two years before UTC-epoch. </p>
     *
     * <p>Leap seconds are not counted but ignored according to POSIX-standard.
     * Before the UTC-epoch 1972-01-01 the second is effectively defined as
     * the 86400th part of mean solar day (UT1). After this UTC-epoch the
     * POSIX-second is with the exception of leap second events equal to
     * the SI-second based on atomic clocks, but in long term effectively
     * similar to the UT1-second based on mean solar time. </p>
     *
     * <p>POSIX is more present in computer realms than UTC although there is
     * no precision in calculation of SI-seconds (a bug of UNIX-specification).
     * The definition of the reference timezone on zero meridian of Greenwich
     * is the same as in UTC. </p>
     *
     * <p>During a leap second the transformation of POSIX-time to an
     * UTC-timestamp is not defined. An old convention in the UNIX world
     * tries to reset the clock by one second AFTER the leapsecod, so
     * effectively mapping the leapsecond to the next day despite of
     * its obvious written form as last second of current day (see also
     * <a href="http://en.wikipedia.org/wiki/Unix_time">Wikipedia-Artikel</a>).
     * The <a href="http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap04.html#tag_04_14">current description of POSIX-time</a>
     * explicitly states however that the relation between the current day
     * time and the current POSIX-value is not specified and dependent on
     * the implementation. Time4J maps the leapsecond to the current day
     * as the last second. This corresponds to an UNXI-variation where a
     * clock is reset at the begin of a leapsecond instead of at the end
     * of a leapsecond. </p>
     */
    /*[deutsch]
     * <p>Z&auml;hlt die Sekunden relativ zur UNIX-Epoche 1970-01-01T00:00:00Z,
     * die zwei Jahre vor der UTC-Epoche liegt. </p>
     *
     * <p>Schaltsekunden werden nicht mitgez&auml;hlt, sondern gem&auml;&szlig;
     * dem POSIX-Standard ignoriert. Vor der UTC-Epoche 1972-01-01 wird die
     * Sekunde effektiv als der 86400-te Teil des mittleren Sonnentags
     * interpretiert (UT1). Danach ist die POSIX-Sekunde mit der Ausnahme von
     * Schaltsekunden im Kurzzeit-Bereich die SI-Sekunde auf Atomuhrzeitbasis,
     * auf lange Sicht aber effektiv als UT1-Sekunde auf Basis der mittleren
     * Sonnenzeit zu interpretieren. </p>
     *
     * <p>POSIX ist im Computer-Bereich pr&auml;senter als UTC, auch wenn von
     * einer Genauigkeit in der Berechnung von SI-Sekunden nicht mehr gesprochen
     * werden kann (ein Bug der UNIX-Spezifikation). Die Definition der
     * Referenzzeitzone auf dem Null-Meridian von Greenwich ist wie in UTC
     * gegeben. </p>
     *
     * <p>W&auml;hrend einer Schaltsekunde ist die Transformation einer
     * POSIX-Zeit zu einem UTC-Zeitstempel im Prinzip undefiniert.<commit_msg>more typos in javadoc corrected<commit_after>/*
 * -----------------------------------------------------------------------
 * Copyright © 2013-2014 <NAME>, <http://www.menodata.de/>
 * -----------------------------------------------------------------------
 * This file (TimeScale.java) is part of project Time4J.
 *
 * Time4J is free software: You can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as published
 * by the Free Software Foundation, either version 2.1 of the License, or
 * (at your option) any later version.
 *
 * Time4J is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with Time4J. If not, see <http://www.gnu.org/licenses/>.
 * -----------------------------------------------------------------------
 */

package net.time4j.scale;


/**
 * <p>Defines some time scales for usage both in civil life and in science. </p>
 *
 * <p>Any conversion is usually not bijective. That means that for example
 * an UTC-timestamp can be mapped in a unique way to UT1, GPS or TAI (provided
 * that there are no negative leap seconds) but in reverse not. More important:
 * Conversions often happen in millisecond-precision or worse so they are
 * more or less like approximation procedures. </p>
 *
 * @author  <NAME>
 */
/*[deutsch]
 * <p>Definiert verschiedene Zeitskalen sowohl zur Verwendung im zivilen
 * Alltag als auch in der Wissenschaft. </p>
 *
 * <p>Konvertierverfahren sind im allgemeinen nicht bijektiv. Das bedeutet,
 * da&szlig; z.B. zwar einem UTC-Zeitpunkt meist eindeutig ein UT1-, GPS- oder
 * TAI-Zeitpunkt zugeordnet werden kann (positive UTC-Schaltsekunden
 * vorausgesetzt), umgekehrt aber nicht. Noch wichtiger: Konversionen
 * erfolgen oft in Millisekundengenauigkeit (oder schlechter), sind
 * also grunds&auml;tzlich N&auml;herungsverfahren. </p>
 *
 * @author  <NAME>
 */
public enum TimeScale {

    //~ Statische Felder/Initialisierungen --------------------------------

    /**
     * <p>Counts the seconds relative to UNIX-epoch 1970-01-01T00:00:00Z
     * which is two years before UTC-epoch. </p>
     *
     * <p>Leap seconds are not counted but ignored according to POSIX-standard.
     * Before the UTC-epoch 1972-01-01 the second is effectively defined as
     * the 86400th part of mean solar day (UT1). After this UTC-epoch the
     * POSIX-second is with the exception of leap second events equal to
     * the SI-second based on atomic clocks, but in long term effectively
     * similar to the UT1-second based on mean solar time. </p>
     *
     * <p>POSIX is more present in computer realms than UTC although there is
     * no precision in calculation of SI-seconds (a bug of UNIX-specification).
     * The definition of the reference timezone on zero meridian of Greenwich
     * is the same as in UTC. </p>
     *
     * <p>During a leap second the transformation of POSIX-time to an
     * UTC-timestamp is not defined. An old convention in the UNIX world
     * tries to reset the clock by one second AFTER the leap second, so
     * effectively mapping the leap second to the next day despite of
     * its obvious written form as last second of current day (see also
     * <a href="http://en.wikipedia.org/wiki/Unix_time">Wikipedia-page</a>).
     * The <a href="http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap04.html#tag_04_14">current description of POSIX-time</a>
     * explicitly states however that the relation between the current day
     * time and the current POSIX-value is not specified and dependent on
     * the implementation. Time4J maps the leap second to the current day
     * as the last second. This corresponds to an UNXI-variation where a
     * clock is reset at the begin of a leap second instead of at the end
     * of a leap second. </p>
     */
    /*[deutsch]
     * <p>Z&auml;hlt die Sekunden relativ zur UNIX-Epoche 1970-01-01T00:00:00Z,
     * die zwei Jahre vor der UTC-Epoche liegt. </p>
     *
     * <p>Schaltsekunden werden nicht mitgez&auml;hlt, sondern gem&auml;&szlig;
     * dem POSIX-Standard ignoriert. Vor der UTC-Epoche 1972-01-01 wird die
     * Sekunde effektiv als der 86400-te Teil des mittleren Sonnentags
     * interpretiert (UT1). Danach ist die POSIX-Sekunde mit der Ausnahme von
     * Schaltsekunden im Kurzzeit-Bereich die SI-Sekunde auf Atomuhrzeitbasis,
     * auf lange Sicht aber effektiv als UT1-Sekunde auf Basis der mittleren
     * Sonnenzeit zu interpretieren. </p>
     *
     * <p>POSIX ist im Computer-Bereich pr&auml;senter als UTC, auch wenn von
     * einer Genauigkeit in der Berechnung von SI-Sekunden nicht mehr gesprochen
     * werden kann (ein Bug der UNIX-Spezifikation). Die Definition der
     * Referenzzeitzone auf dem Null-Meridian von Greenwich ist wie in UTC
     * gegeben. </p>
     *
     * <p>W&auml;hrend einer Schaltsekunde ist die Transformation einer
     * POSIX-Zeit zu einem UTC-Zeitstempel im Prinzip undefiniert.
{'fraction_non_alphanumeric': 0.12076923076923077, 'fraction_numerical': 0.0175, 'mean_word_length': 2.705379408621304, 'pattern_counts': {'":': 0, '<': 67, '<?xml version=': 0, '>': 67, 'https://': 0, 'lorem ipsum': 0, 'www.': 6, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3308059', 'n_tokens_mistral': 3184, 'n_tokens_neox': 3041, 'n_words': 1249}