/*
Реализация среды исполнения языка программирования
Объектно-ориентированный продвинутый векторный транслятор
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 }
}