mirror of
https://github.com/0x5eal/chrono-lc.git
synced 2024-12-13 13:30:39 +00:00
Add formatl to NaiveDateTime and fix doctests
This commit is contained in:
parent
cfcbd8e555
commit
ab56ab175c
3 changed files with 76 additions and 5 deletions
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "chrono_locale"
|
||||
version = "0.1.0"
|
||||
version = "0.1.1"
|
||||
authors = ["Alessandro Pellizzari <alex@amiran.it>"]
|
||||
description = "Localised date and time formatting library for Rust, based on chrono"
|
||||
homepage = "https://github.com/Alex-PK/chrono-locale"
|
||||
|
|
17
src/lib.rs
17
src/lib.rs
|
@ -5,7 +5,7 @@
|
|||
//!
|
||||
//! Put this in your Cargo.toml:
|
||||
//!
|
||||
//! ```
|
||||
//! ```toml
|
||||
//! [dependencies]
|
||||
//! chrono = "0.4"
|
||||
//! chrono_locale = "0.1"
|
||||
|
@ -13,7 +13,7 @@
|
|||
//!
|
||||
//! Then put this in your `lib.rs` or `main.rs`:
|
||||
//!
|
||||
//! ```
|
||||
//! ```rust
|
||||
//! extern crate chrono;
|
||||
//! extern crate chrono_locale;
|
||||
//!
|
||||
|
@ -26,7 +26,12 @@
|
|||
//!
|
||||
//! To format a chrono `Date` or `DateTime` object, you can use the `formatl` method:
|
||||
//!
|
||||
//! ```
|
||||
//! ```rust
|
||||
//! # extern crate chrono;
|
||||
//! # extern crate chrono_locale;
|
||||
//! # use chrono::prelude::*;
|
||||
//! # use chrono_locale::LocaleDate;
|
||||
//!
|
||||
//! let dt = FixedOffset::east(34200).ymd(2001, 7, 8).and_hms_nano(0, 34, 59, 1_026_490_708);
|
||||
//! println!("{}", dt.formatl("%c", "fr"));
|
||||
//! ```
|
||||
|
@ -73,6 +78,12 @@ impl LocaleDate for chrono::NaiveDate {
|
|||
}
|
||||
}
|
||||
|
||||
impl LocaleDate for chrono::NaiveDateTime {
|
||||
fn formatl<'a>(&self, fmt: &'a str, locale: &str) -> DelayedFormatL10n<StrftimeItems<'a>> {
|
||||
DelayedFormatL10n::new(Some(self.date()), Some(self.time()), StrftimeItems::new(fmt), locale)
|
||||
}
|
||||
}
|
||||
|
||||
impl<Tz: TimeZone> LocaleDate for chrono::Date<Tz> {
|
||||
fn formatl<'a>(&self, fmt: &'a str, locale: &str) -> DelayedFormatL10n<StrftimeItems<'a>> {
|
||||
let offset = self.offset().fix();
|
||||
|
|
62
tests/en.rs
62
tests/en.rs
|
@ -1,7 +1,7 @@
|
|||
extern crate chrono;
|
||||
extern crate chrono_locale;
|
||||
|
||||
use chrono::{FixedOffset, TimeZone, Timelike};
|
||||
use chrono::{FixedOffset, TimeZone, Timelike, NaiveDateTime};
|
||||
use chrono_locale::LocaleDate;
|
||||
|
||||
// This test is copied from chrono's, disabling unsupported features
|
||||
|
@ -81,3 +81,63 @@ fn format_en() {
|
|||
assert_eq!(dt.formatl("%n", locale).to_string(), "\n");
|
||||
assert_eq!(dt.formatl("%%", locale).to_string(), "%");
|
||||
}
|
||||
|
||||
|
||||
#[test]
|
||||
fn format_en_naive() {
|
||||
let dt = FixedOffset::east(34200).ymd(2001, 7, 8).and_hms_nano(0, 34, 59, 1_026_490_708);
|
||||
let dt = dt.naive_local();
|
||||
let locale = "en";
|
||||
|
||||
// date specifiers
|
||||
assert_eq!(dt.formatl("%Y", locale).to_string(), "2001");
|
||||
assert_eq!(dt.formatl("%C", locale).to_string(), "20");
|
||||
assert_eq!(dt.formatl("%y", locale).to_string(), "01");
|
||||
assert_eq!(dt.formatl("%m", locale).to_string(), "07");
|
||||
assert_eq!(dt.formatl("%b", locale).to_string(), "Jul");
|
||||
assert_eq!(dt.formatl("%B", locale).to_string(), "July");
|
||||
assert_eq!(dt.formatl("%h", locale).to_string(), "Jul");
|
||||
assert_eq!(dt.formatl("%d", locale).to_string(), "08");
|
||||
assert_eq!(dt.formatl("%e", locale).to_string(), " 8");
|
||||
assert_eq!(dt.formatl("%e", locale).to_string(), dt.formatl("%_d", locale).to_string());
|
||||
assert_eq!(dt.formatl("%a", locale).to_string(), "Sun");
|
||||
assert_eq!(dt.formatl("%A", locale).to_string(), "Sunday");
|
||||
assert_eq!(dt.formatl("%w", locale).to_string(), "0");
|
||||
assert_eq!(dt.formatl("%u", locale).to_string(), "7");
|
||||
assert_eq!(dt.formatl("%U", locale).to_string(), "28");
|
||||
assert_eq!(dt.formatl("%W", locale).to_string(), "27");
|
||||
assert_eq!(dt.formatl("%G", locale).to_string(), "2001");
|
||||
assert_eq!(dt.formatl("%g", locale).to_string(), "01");
|
||||
assert_eq!(dt.formatl("%V", locale).to_string(), "27");
|
||||
assert_eq!(dt.formatl("%j", locale).to_string(), "189");
|
||||
assert_eq!(dt.formatl("%D", locale).to_string(), "07/08/01");
|
||||
assert_eq!(dt.formatl("%x", locale).to_string(), "07/08/01");
|
||||
assert_eq!(dt.formatl("%F", locale).to_string(), "2001-07-08");
|
||||
assert_eq!(dt.formatl("%v", locale).to_string(), " 8-Jul-2001");
|
||||
|
||||
// time specifiers
|
||||
assert_eq!(dt.formatl("%H", locale).to_string(), "00");
|
||||
assert_eq!(dt.formatl("%k", locale).to_string(), " 0");
|
||||
assert_eq!(dt.formatl("%k", locale).to_string(), dt.formatl("%_H", locale).to_string());
|
||||
assert_eq!(dt.formatl("%I", locale).to_string(), "12");
|
||||
assert_eq!(dt.formatl("%l", locale).to_string(), "12");
|
||||
assert_eq!(dt.formatl("%l", locale).to_string(), dt.formatl("%_I", locale).to_string());
|
||||
assert_eq!(dt.formatl("%P", locale).to_string(), "am");
|
||||
assert_eq!(dt.formatl("%p", locale).to_string(), "AM");
|
||||
assert_eq!(dt.formatl("%M", locale).to_string(), "34");
|
||||
assert_eq!(dt.formatl("%S", locale).to_string(), "60");
|
||||
assert_eq!(dt.formatl("%R", locale).to_string(), "00:34");
|
||||
assert_eq!(dt.formatl("%T", locale).to_string(), "00:34:60");
|
||||
assert_eq!(dt.formatl("%X", locale).to_string(), "00:34:60");
|
||||
assert_eq!(dt.formatl("%r", locale).to_string(), "12:34:60 AM");
|
||||
|
||||
// date & time specifiers
|
||||
assert_eq!(dt.formatl("%c", locale).to_string(), "Sun Jul 8 00:34:60 2001");
|
||||
// assert_eq!(dt.formatl("%+", locale).to_string(), "2001-07-08T00:34:60.026490708+09:30");
|
||||
assert_eq!(dt.formatl("%s", locale).to_string(), "994552499");
|
||||
|
||||
// special specifiers
|
||||
assert_eq!(dt.formatl("%t", locale).to_string(), "\t");
|
||||
assert_eq!(dt.formatl("%n", locale).to_string(), "\n");
|
||||
assert_eq!(dt.formatl("%%", locale).to_string(), "%");
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue