#[derive(Clone, Debug, PartialEq)]
#[allow(dead_code)]
pub enum DateTimePattern {
YyyyMmDd,
MmDdYyyy,
DdMmYyyy,
YyyyMmDdHhMm,
YyyyMmDdHhMmSs,
YyyyMmDdHhMmSsSss,
HhMm,
HhMmSs,
MonthFull,
MonthAbbr,
WeekdayFull,
WeekdayAbbr,
AmPm,
Timestamp,
}
#[allow(dead_code)]
impl DateTimePattern {
pub const YYYY_MM_DD: &'static str = "%Y-%m-%d";
pub const MM_DD_YYYY: &'static str = "%m/%d/%Y";
pub const DD_MM_YYYY: &'static str = "%d-%m-%Y";
pub const YYYY_MM_DD_HH_MM: &'static str = "%Y-%m-%d %H:%M";
pub const YYYY_MM_DD_HH_MM_SS: &'static str = "%Y-%m-%d %H:%M:%S";
pub const YYYY_MM_DD_HH_MM_SS_SSS: &'static str = "%Y-%m-%d %H:%M:%S%.3f";
pub const HH_MM: &'static str = "%H:%M";
pub const HH_MM_SS: &'static str = "%H:%M:%S";
pub const MONTH_FULL: &'static str = "%B";
pub const MONTH_ABBR: &'static str = "%b";
pub const WEEKDAY_FULL: &'static str = "%A";
pub const WEEKDAY_ABBR: &'static str = "%a";
pub const AM_PM: &'static str = "%p";
pub const TIMESTAMP: &'static str = "timestamp";
pub const YYYY_MM_DD_NAME: &'static str = "YyyyMmDd";
pub const MM_DD_YYYY_NAME: &'static str = "MmDdYyyy";
pub const DD_MM_YYYY_NAME: &'static str = "DdMmYyyy";
pub const YYYY_MM_DD_HH_MM_NAME: &'static str = "YyyyMmDdHhMm";
pub const YYYY_MM_DD_HH_MM_SS_NAME: &'static str = "YyyyMmDdHhMmSs";
pub const YYYY_MM_DD_HH_MM_SS_SSS_NAME: &'static str = "YyyyMmDdHhMmSsSss";
pub const HH_MM_NAME: &'static str = "HhMm";
pub const HH_MM_SS_NAME: &'static str = "HhMmSs";
pub const MONTH_FULL_NAME: &'static str = "MonthFull";
pub const MONTH_ABBR_NAME: &'static str = "MonthAbbr";
pub const WEEKDAY_FULL_NAME: &'static str = "WeekdayFull";
pub const WEEKDAY_ABBR_NAME: &'static str = "WeekdayAbbr";
pub const AM_PM_NAME: &'static str = "AmPm";
pub const TIMESTAMP_NAME: &'static str = "Timestamp";
pub fn value(&self) -> String {
format!("{:?}", self)
}
}
impl DateTimePattern {
pub fn pattern_of(&self) -> &'static str {
match self {
DateTimePattern::YyyyMmDd => DateTimePattern::YYYY_MM_DD,
DateTimePattern::MmDdYyyy => DateTimePattern::MM_DD_YYYY,
DateTimePattern::DdMmYyyy => DateTimePattern::DD_MM_YYYY,
DateTimePattern::YyyyMmDdHhMm => DateTimePattern::YYYY_MM_DD_HH_MM,
DateTimePattern::YyyyMmDdHhMmSs => DateTimePattern::YYYY_MM_DD_HH_MM_SS,
DateTimePattern::YyyyMmDdHhMmSsSss => DateTimePattern::YYYY_MM_DD_HH_MM_SS_SSS,
DateTimePattern::HhMm => DateTimePattern::HH_MM,
DateTimePattern::HhMmSs => DateTimePattern::HH_MM_SS,
DateTimePattern::MonthFull => DateTimePattern::MONTH_FULL,
DateTimePattern::MonthAbbr => DateTimePattern::MONTH_ABBR,
DateTimePattern::WeekdayFull => DateTimePattern::WEEKDAY_FULL,
DateTimePattern::WeekdayAbbr => DateTimePattern::WEEKDAY_ABBR,
DateTimePattern::AmPm => DateTimePattern::AM_PM,
DateTimePattern::Timestamp => DateTimePattern::TIMESTAMP,
}
}
pub fn value_of(pattern: &str) -> Option<DateTimePattern> {
match pattern {
DateTimePattern::YYYY_MM_DD => Some(DateTimePattern::YyyyMmDd),
DateTimePattern::MM_DD_YYYY => Some(DateTimePattern::MmDdYyyy),
DateTimePattern::DD_MM_YYYY => Some(DateTimePattern::DdMmYyyy),
DateTimePattern::YYYY_MM_DD_HH_MM => Some(DateTimePattern::YyyyMmDdHhMm),
DateTimePattern::YYYY_MM_DD_HH_MM_SS => Some(DateTimePattern::YyyyMmDdHhMmSs),
DateTimePattern::YYYY_MM_DD_HH_MM_SS_SSS => Some(DateTimePattern::YyyyMmDdHhMmSsSss),
DateTimePattern::HH_MM => Some(DateTimePattern::HhMm),
DateTimePattern::HH_MM_SS => Some(DateTimePattern::HhMmSs),
DateTimePattern::MONTH_FULL => Some(DateTimePattern::MonthFull),
DateTimePattern::MONTH_ABBR => Some(DateTimePattern::MonthAbbr),
DateTimePattern::WEEKDAY_FULL => Some(DateTimePattern::WeekdayFull),
DateTimePattern::WEEKDAY_ABBR => Some(DateTimePattern::WeekdayAbbr),
DateTimePattern::AM_PM => Some(DateTimePattern::AmPm),
DateTimePattern::TIMESTAMP => Some(DateTimePattern::Timestamp),
_ => None,
}
}
pub fn name_of(name: &str) -> Option<DateTimePattern> {
match name {
DateTimePattern::YYYY_MM_DD_NAME => Some(DateTimePattern::YyyyMmDd),
DateTimePattern::MM_DD_YYYY_NAME => Some(DateTimePattern::MmDdYyyy),
DateTimePattern::DD_MM_YYYY_NAME => Some(DateTimePattern::DdMmYyyy),
DateTimePattern::YYYY_MM_DD_HH_MM_NAME => Some(DateTimePattern::YyyyMmDdHhMm),
DateTimePattern::YYYY_MM_DD_HH_MM_SS_NAME => Some(DateTimePattern::YyyyMmDdHhMmSs),
DateTimePattern::YYYY_MM_DD_HH_MM_SS_SSS_NAME => {
Some(DateTimePattern::YyyyMmDdHhMmSsSss)
}
DateTimePattern::HH_MM_NAME => Some(DateTimePattern::HhMm),
DateTimePattern::HH_MM_SS_NAME => Some(DateTimePattern::HhMmSs),
DateTimePattern::MONTH_FULL_NAME => Some(DateTimePattern::MonthFull),
DateTimePattern::MONTH_ABBR_NAME => Some(DateTimePattern::MonthAbbr),
DateTimePattern::WEEKDAY_FULL_NAME => Some(DateTimePattern::WeekdayFull),
DateTimePattern::WEEKDAY_ABBR_NAME => Some(DateTimePattern::WeekdayAbbr),
DateTimePattern::AM_PM_NAME => Some(DateTimePattern::AmPm),
DateTimePattern::TIMESTAMP_NAME => Some(DateTimePattern::Timestamp),
_ => None,
}
}
}