headers/common/date.rs
1use std::time::SystemTime;
2
3use crate::util::HttpDate;
4
5/// `Date` header, defined in [RFC7231](https://datatracker.ietf.org/doc/html/rfc7231#section-7.1.1.2)
6///
7/// The `Date` header field represents the date and time at which the
8/// message was originated.
9///
10/// ## ABNF
11///
12/// ```text
13/// Date = HTTP-date
14/// ```
15///
16/// ## Example values
17///
18/// * `Tue, 15 Nov 1994 08:12:31 GMT`
19///
20/// # Example
21///
22/// ```
23/// use headers::Date;
24/// use std::time::SystemTime;
25///
26/// let date = Date::from(SystemTime::now());
27/// ```
28#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
29pub struct Date(HttpDate);
30
31derive_header! {
32 Date(_),
33 name: DATE
34}
35
36impl From<SystemTime> for Date {
37 fn from(time: SystemTime) -> Date {
38 Date(time.into())
39 }
40}
41
42impl From<Date> for SystemTime {
43 fn from(date: Date) -> SystemTime {
44 date.0.into()
45 }
46}