Timestamp.avt

Переключить прокрутку окна
Загрузить этот исходный код

/*
    Реализация среды исполнения языка программирования
    Объектно-ориентированный продвинутый векторный транслятор

    Copyright © 2021, 2024 Малик Разработчик

    Это свободная программа: вы можете перераспространять ее и/или изменять
    ее на условиях Меньшей Стандартной общественной лицензии GNU в том виде,
    в каком она была опубликована Фондом свободного программного обеспечения;
    либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.

    Эта программа распространяется в надежде, что она будет полезной,
    но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА
    или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. Подробнее см. в Меньшей Стандартной
    общественной лицензии GNU.

    Вы должны были получить копию Меньшей Стандартной общественной лицензии GNU
    вместе с этой программой. Если это не так, см.
    <https://www.gnu.org/licenses/>.
*/

package avt.util;

public final class Timestamp(Object, Comparable, Cloneable)
{
    private final long fldTimeInMillis;

    public () { fldTimeInMillis = System.currentTimeInMillis(); }

    public (long timeInMillis) { fldTimeInMillis = timeInMillis; }

    public boolean equals(Object anot) { return anot == this || anot instanceof Timestamp && ((Timestamp) anot).fldTimeInMillis == fldTimeInMillis; }

    public int hashCode() {
        long value = fldTimeInMillis;
        return (int) (value ^ (value >> 32));
    }

    public long hashCodeAsLong() { return fldTimeInMillis; }

    public String toString() { return ((Object) (new LocalizedCalendarRepresenter(new GregorianCalendar(fldTimeInMillis)))).toString(); }

    public int compareTo(Comparable anot) { return anot == this ? EQUALS : !(anot instanceof Timestamp) ? INDEFINITE : Long.compare(fldTimeInMillis, ((Timestamp) anot).fldTimeInMillis); }

    public Timestamp clone() { return new Timestamp(fldTimeInMillis); }

    public long toUnixTime() { return fldTimeInMillis + -0x00003883122cd800L; }

    public String toString(Calendar use) {
        if(use == null)
        {
            use = new GregorianCalendar(fldTimeInMillis);
        } else
        {
            use.timeInMillis = fldTimeInMillis;
        }
        return ((Object) (new LocalizedCalendarRepresenter(use))).toString();
    }

    public long timeInMillis { read = fldTimeInMillis }
}