1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
// This file is @generated by prost-build.
/// Represents a range based on whole or partial calendar dates, e.g. the
/// duration of a hotel reservation or the Common Era. This can represent:
///
/// * A range between full dates, e.g. the duration of a hotel reservation
/// * A range between years, e.g. a historical era
/// * A range between year/month dates, e.g. the duration of a job on a resume
/// * A range beginning in a year, e.g. the Common Era
/// * A range ending on a specific date, e.g. the period of time before an event
///
/// While [google.type.Date][google.type.Date] allows zero years, DateRange does not. Year must
/// always be non-zero.
///
/// End cannot be chronologically before start. For example, if start has year
/// 2000, end cannot have year 1999.
///
/// When both set, start and end must have exactly the same precision. That is,
/// they must have the same fields populated with non-zero values. For example,
/// if start specifies only year and month, then end must also specify only year
/// and month (but not day).
///
/// The date range is inclusive. That is, the dates specified by start and end
/// are part of the date range. For example, the date January 1, 2000 falls
/// within any date with start or end equal to January 1, 2000. When determining
/// whether a date is inside a date range, the date should only be compared to
/// start and end when those values are set.
///
/// When a date and date range are specified to different degrees of precision,
/// the rules for evaluating whether that date is inside the date range are as
/// follows:
///
///   * When comparing the date to the start of the date range, unspecified months
///     should be replaced with 1, and unspecified days should be replaced with 1.
///     For example, the year 2000 is within the date range with start equal to
///     January 1, 2000 and no end. And the date January 1, 2000 is within the
///     date range with start equal to the year 2000 and no end.
///
///   * When comparing the date to the end of the date range, unspecified months
///     should be replaced with 12, and unspecified days should be replaced with
///     the last valid day for the month/year. For example, the year 2000 is
///     within the date range with start equal to January 1, 1999 and end equal to
///     December 31, 2000. And the date December 31, 2001 is within the date range
///     with start equal to the year 2000 and end equal to the year 2001.
///
/// The semantics of start and end are the same as those of [google.type.Date][google.type.Date],
/// except that year must always be non-zero in DateRange.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DateRange {
    /// Date at which the date range begins. If unset, the date range has no
    /// beginning bound.
    #[prost(message, optional, tag = "1")]
    pub start: ::core::option::Option<super::super::r#type::Date>,
    /// Date at which the date range ends. If unset, the date range has no ending
    /// bound.
    #[prost(message, optional, tag = "2")]
    pub end: ::core::option::Option<super::super::r#type::Date>,
}
/// Represents a date and time range. This can represent:
///
/// * A range between points in time with time zone or offset, e.g. the duration
///    of a flight which starts in the "America/New_York" time zone and ends in
///    the "Australia/Sydney" time zone
/// * A range between points in time without time zone/offset info, e.g. an
///    appointment in local time
/// * A range starting at a specific date and time, e.g. the range of time which
///    can be measured in milliseconds since the Unix epoch (period starting with
///    1970-01-01T00:00:00Z)
/// * A range ending at a specific date and time, e.g. range of time before
///    a deadline
///
/// When considering whether a DateTime falls within a DateTimeRange, the start
/// of the range is inclusive and the end is exclusive.
///
/// While [google.type.DateTime][google.type.DateTime] allows zero years, DateTimeRange does not.
/// Year must always be non-zero.
///
/// When both start and end are set, either both or neither must have a
/// time_offset. When set, time_offset can be specified by either utc_offset or
/// time_zone and must match for start and end, that is if start has utc_offset
/// set then end must also have utc_offset set. The values of utc_offset or
/// time_zone need not be the same for start and end.
///
/// When both start and end are set, start must be chronologically less than or
/// equal to end. When start and end are equal, the range is empty.
///
/// The semantics of start and end are the same as those of
/// [google.type.DateTime][google.type.DateTime].
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DateTimeRange {
    /// DateTime at which the date range begins. If unset, the range has no
    /// beginning bound.
    #[prost(message, optional, tag = "1")]
    pub start: ::core::option::Option<super::super::r#type::DateTime>,
    /// DateTime at which the date range ends. If unset, the range has no ending
    /// bound.
    #[prost(message, optional, tag = "2")]
    pub end: ::core::option::Option<super::super::r#type::DateTime>,
}