#[non_exhaustive]pub struct Timestamp { /* private fields */ }Expand description
Well-known point in time representation for Google APIs.
A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar backwards to year one.
All minutes are 60 seconds long. Leap seconds are “smeared” so that no leap second table is needed for interpretation, using a 24-hour linear smear.
The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to that range, we ensure that we can convert to and from RFC 3339 date strings.
§JSON Mapping
In JSON format, the Timestamp type is encoded as a string in the RFC 3339 format. That is, the format is “{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z” where {year} is always expressed using four digits while {month}, {day}, {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), are optional. The “Z” suffix indicates the timezone (“UTC”); the timezone is required.
For example, “2017-01-15T01:30:15.01Z” encodes 15.01 seconds past 01:30 UTC on January 15, 2017.
Implementations§
Source§impl Timestamp
impl Timestamp
Sourcepub const MIN_SECONDS: i64 = -62_135_596_800i64
pub const MIN_SECONDS: i64 = -62_135_596_800i64
The minimum value for the seconds component. Corresponds to ‘0001-01-01T00:00:00Z’.
Sourcepub const MAX_SECONDS: i64 = 253_402_300_799i64
pub const MAX_SECONDS: i64 = 253_402_300_799i64
The maximum value for the seconds component. Corresponds to ‘9999-12-31T23:59:59Z’.
Sourcepub fn clamp(seconds: i64, nanos: i32) -> Self
pub fn clamp(seconds: i64, nanos: i32) -> Self
Create a normalized, clamped Timestamp.
Timestamps must be between 0001-01-01T00:00:00Z and 9999-12-31T23:59:59.999999999Z, and the nanoseconds component must always be in the range [0, 999_999_999]. This function creates a new Timestamp instance clamped to those ranges.
The function effectively adds the nanoseconds part (with carry) to the seconds part, with saturation.
§Arguments
seconds- the seconds on the timestamp.nanos- the nanoseconds added to the seconds.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Timestamp
Implement serde deserialization for timestamps.
impl<'de> Deserialize<'de> for Timestamp
Implement serde deserialization for timestamps.