[−][src]Crate datetime_string
Datetime string types.
This crate provides borrowed and owned string types for datetime.
The types in this crate do:
- guarantee that the content string is well-formatted in some specific datetime format, and
- provide convenient API for getting and setting components of datetime, for example getting the hour and setting the day of a month.
Feature flags
alloc
- Enabled by default.
- Provides types and functions which requires
alloc
crate. Examples of stuff inalloc
isString
,ToOwned
,Vec<u8>
, etc.
std
- Enabled by default.
- Provides types and functions which requires
std
crate. Examples of stuff instd
isstd::error::Error
.
chrono04
- Provides some conversions between types in
chrono
crate v0.4 and this crate.
- Provides some conversions between types in
serde
- Provides
serde::{Serilaize, Deserialize}
implementations for string types.
- Provides
alloc_with_serde
- Enables
alloc
feature for this crate andalloc
feature forserde
crate.
- Enables
std_with_serde
- Enables
std
feature for this crate andstd
feature forserde
crate.
- Enables
Values construction
Borrowed string slice types can be constructed by:
from_str()
,from_mut_str()
,from_bytes()
,from_bytes_mut()
,TryFrom<&[u8]>
,TryFrom<&mut [u8]>
,TryFrom<&str>
, andTryFrom<&mut str>
.
Owned string types can be constructed by:
From<&{corresponding borrowed string type}>
,TryFrom<&[u8]>
,TryFrom<Vec<u8>>
,TryFrom<&str>
,TryFrom<String>
, andFromStr
(i.e.str::parse
).
Examples
// `Hms6ColonStr` guarantees that the string is valid `hh:mm:ss` time. use datetime_string::common::Hms6ColonStr; let time = Hms6ColonStr::from_str("12:34:56")?; assert_eq!(time.hour(), 12); assert_eq!(time.minute(), 34); assert_eq!(time.second(), 56);
use std::convert::TryFrom; // `Ymd8HyphenString` guarantees that the string is valid `YYYY-MM-DD` date. use datetime_string::common::Ymd8HyphenString; let mut date = Ymd8HyphenString::try_from("1999-12-31")?; assert_eq!(date.year(), 1999); // 1-based month. assert_eq!(date.month1(), 12); // 0-based month. assert_eq!(date.month0(), 11); // Day of a month. assert_eq!(date.mday(), 31); date.set_month1(1)?; assert_eq!(date.as_str(), "1999-01-31"); assert!(date.set_month1(11).is_err(), "This fails because 1999-11-31 is invalid date");
Modules
common | Common formats. |
rfc3339 | RFC 3339 string types. |
Structs
ConversionError | Error with value before conversion. |
Error | Validation error. |