All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.postgresql.util.PGTimestamp Maven / Gradle / Ivy

There is a newer version: 42.7.3
Show newest version
/*-------------------------------------------------------------------------
 *
 * Copyright (c) 2004-2014, PostgreSQL Global Development Group
 *
 *
 *-------------------------------------------------------------------------
 */
package org.postgresql.util;

import java.sql.PreparedStatement;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.TimeZone;

/**
 * This class augments the Java built-in Timestamp to allow for explicit setting
 * of the time zone.
 */
public class PGTimestamp extends Timestamp
{
    /** The serial version UID. */
    private static final long serialVersionUID = -6245623465210738466L;

    /** The optional calendar for this timestamp. */
    private Calendar calendar;

    /**
     * Constructs a PGTimestamp without a time zone. The integral
     * seconds are stored in the underlying date value; the fractional seconds
     * are stored in the nanos field of the Timestamp
     * object.
     *
     * @param time
     *            milliseconds since January 1, 1970, 00:00:00 GMT. A negative
     *            number is the number of milliseconds before January 1, 1970,
     *            00:00:00 GMT.
     * @see Timestamp#Timestamp(long)
     */
    public PGTimestamp(long time)
    {
        this(time, null);
    }

    /**
     * Constructs a PGTimestamp with the given time zone. The
     * integral seconds are stored in the underlying date value; the fractional
     * seconds are stored in the nanos field of the
     * Timestamp object.
     * 

* The calendar object is optional. If absent, the driver will treat the * timestamp as timestamp without time zone. When present, the * driver will treat the timestamp as a timestamp with time zone * using the TimeZone in the calendar object. Furthermore, this * calendar will be used instead of the calendar object passed to * {@link PreparedStatement#setTimestamp(int, Timestamp, Calendar)}. * * @param time * milliseconds since January 1, 1970, 00:00:00 GMT. A negative * number is the number of milliseconds before January 1, 1970, * 00:00:00 GMT. * @param calendar * the calendar object containing the time zone or * null. * @see Timestamp#Timestamp(long) */ public PGTimestamp(long time, Calendar calendar) { super(time); this.setCalendar(calendar); } /** * Sets the calendar object for this timestamp. * * @param calendar * the calendar object or null. */ public void setCalendar(Calendar calendar) { this.calendar = calendar; } /** * Returns the calendar object for this timestamp. * * @return the calendar object or null. */ public Calendar getCalendar() { return calendar; } @Override public int hashCode() { final int prime = 31; int result = super.hashCode(); result = prime * result + ((calendar == null) ? 0 : calendar.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (!super.equals(obj)) return false; if (!(obj instanceof PGTimestamp)) return false; PGTimestamp other = (PGTimestamp) obj; if (calendar == null) { if (other.calendar != null) return false; } else if (!calendar.equals(other.calendar)) return false; return true; } @Override public Object clone() { PGTimestamp clone = (PGTimestamp)super.clone(); if (getCalendar() != null) { clone.setCalendar((Calendar)getCalendar().clone()); } return clone; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy