/*
* Copyright (c) 2004, PostgreSQL Global Development Group
* See the LICENSE file in the project root for more information.
*/
package org.postgresql.util;
import java.sql.Timestamp;
import java.util.Calendar;
This class augments the Java built-in Timestamp to allow for explicit setting of the time zone.
/**
* 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.
/**
* The serial version UID.
*/
private static final long serialVersionUID = -6245623465210738466L;
The optional calendar for this timestamp.
/**
* 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.
Params: - 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 Also:
/**
* Constructs a <code>PGTimestamp</code> without a time zone. The integral seconds are stored in
* the underlying date value; the fractional seconds are stored in the <code>nanos</code> field of
* the <code>Timestamp</code> 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 PreparedStatement.setTimestamp(int, Timestamp, Calendar)
.
Params: - 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.
- calendar – the calendar object containing the time zone or
null
.
See Also:
/**
* <p>Constructs a <code>PGTimestamp</code> with the given time zone. The integral seconds are stored
* in the underlying date value; the fractional seconds are stored in the <code>nanos</code> field
* of the <code>Timestamp</code> object.</p>
*
* <p>The calendar object is optional. If absent, the driver will treat the timestamp as
* <code>timestamp without time zone</code>. When present, the driver will treat the timestamp as
* a <code>timestamp with time zone</code> using the <code>TimeZone</code> in the calendar object.
* Furthermore, this calendar will be used instead of the calendar object passed to
* {@link java.sql.PreparedStatement#setTimestamp(int, Timestamp, Calendar)}.</p>
*
* @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 <code>null</code>.
* @see Timestamp#Timestamp(long)
*/
public PGTimestamp(long time, Calendar calendar) {
super(time);
this.setCalendar(calendar);
}
Sets the calendar object for this timestamp.
Params: - calendar – the calendar object or
null
.
/**
* Sets the calendar object for this timestamp.
*
* @param calendar the calendar object or <code>null</code>.
*/
public void setCalendar(Calendar calendar) {
this.calendar = calendar;
}
Returns the calendar object for this timestamp.
Returns: the calendar object or null
.
/**
* Returns the calendar object for this timestamp.
*
* @return the calendar object or <code>null</code>.
*/
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;
}
}