Timestamp

Timestamp

A Timestamp represents a point in time independent of any time zone or calendar, represented as seconds and fractions of seconds at nanosecond resolution in UTC Epoch time. It is encoded using the Proleptic Gregorian Calendar which extends the Gregorian calendar backwards to year one. It is encoded assuming all minutes are 60 seconds long, i.e. leap seconds are "smeared" so that no leap second table is needed for interpretation. Range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z.

Constructor

new Timestamp(seconds, nanoseconds)

Creates a new timestamp.

Parameters:
Name Type Description
seconds number

The number of seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.

nanoseconds number

The non-negative fractions of a second at nanosecond resolution. Negative second values with fractions must still have non-negative nanoseconds values that count forward in time. Must be from 0 to 999,999,999 inclusive.

See:
Example
let documentRef = firestore.doc('col/doc');

documentRef.set({ startTime:new Firestore.Timestamp(42, 0) });

Members

nanoseconds :number

The non-negative fractions of a second at nanosecond resolution.

Example
let documentRef = firestore.doc('col/doc');

documentRef.get().then(snap => {
  let updated = snap.updateTime;
  console.log(`Updated at ${updated.seconds}s ${updated.nanoseconds}ns`);
});

seconds :number

The number of seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z.

Example
let documentRef = firestore.doc('col/doc');

documentRef.get().then(snap => {
  let updated = snap.updateTime;
  console.log(`Updated at ${updated.seconds}s ${updated.nanoseconds}ns`);
});

Methods

(static) fromDate(date) → {Timestamp}

Creates a new timestamp from the given date.

Parameters:
Name Type Description
date Date

The date to initialize the Timestamp from.

Example
let documentRef = firestore.doc('col/doc');

let date = Date.parse('01 Jan 2000 00:00:00 GMT');
documentRef.set({ startTime:Firestore.Timestamp.fromDate(date) });

(static) fromMillis(milliseconds) → {Timestamp}

Creates a new timestamp from the given number of milliseconds.

Parameters:
Name Type Description
milliseconds number

Number of milliseconds since Unix epoch 1970-01-01T00:00:00Z.

Example
let documentRef = firestore.doc('col/doc');

documentRef.set({ startTime:Firestore.Timestamp.fromMillis(42) });

(static) now() → {Timestamp}

Creates a new timestamp with the current date, with millisecond precision.

Example
let documentRef = firestore.doc('col/doc');

documentRef.set({ updateTime:Firestore.Timestamp.now() });

isEqual(other) → {boolean}

Returns 'true' if this Timestamp is equal to the provided one.

Parameters:
Name Type Description
other any

The Timestamp to compare against.

Example
let documentRef = firestore.doc('col/doc');

documentRef.get().then(snap => {
  if (snap.createTime.isEqual(snap.updateTime)) {
    console.log('Document is in its initial state.');
  }
});

toDate() → {Date}

Returns a new Date corresponding to this timestamp. This may lose precision.

Example
let documentRef = firestore.doc('col/doc');

documentRef.get().then(snap => {
  console.log(`Document updated at: ${snap.updateTime.toDate()}`);
});

toMillis() → {number}

Returns the number of milliseconds since Unix epoch 1970-01-01T00:00:00Z.

Example
let documentRef = firestore.doc('col/doc');

documentRef.get().then(snap => {
  let startTime = snap.get('startTime');
  let endTime = snap.get('endTime');
  console.log(`Duration: ${endTime - startTime}`);
});

valueOf() → {string}

Converts this object to a primitive string, which allows Timestamp objects to be compared using the >, <=, >= and > operators.