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

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

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

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.

Returns:
Type Description
boolean

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

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.

Returns:
Type Description
Date

JavaScript Date object representing the same point in time as this Timestamp, with millisecond 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.

Returns:
Type Description
number

The point in time corresponding to this timestamp, represented as 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.

Returns:
Type Description
string

a string encoding of this object.

(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.

Returns:
Type Description
Timestamp

A new Timestamp representing the same point in time as the given date.

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.

Returns:
Type Description
Timestamp

A new Timestamp representing the same point in time as the given number of milliseconds.

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.

Returns:
Type Description
Timestamp

A new Timestamp representing the current date.

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

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

```