commit
ee52f2f02c
26
CHANGELOG.md
26
CHANGELOG.md
|
@ -8,10 +8,32 @@ Chrono obeys the principle of [Semantic Versioning](http://semver.org/).
|
||||||
There were/are numerous minor versions before 1.0 due to the language changes.
|
There were/are numerous minor versions before 1.0 due to the language changes.
|
||||||
Versions with only mechnical changes will be omitted from the following list.
|
Versions with only mechnical changes will be omitted from the following list.
|
||||||
|
|
||||||
|
## 0.4.1
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* Allow parsing timestamps with subsecond precision (@jonasbb)
|
||||||
|
* RFC2822 allows times to not include the second (@upsuper)
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* New `timestamp_millis` method on `DateTime` and `NaiveDateTim` that returns
|
||||||
|
number of milliseconds since the epoch. (@quodlibetor)
|
||||||
|
* Support exact decimal width on subsecond display for RFC3339 via a new
|
||||||
|
`to_rfc3339_opts` method on `DateTime` (@dekellum)
|
||||||
|
* Use no_std-compatible num dependencies (@cuviper)
|
||||||
|
* Add `SubsecRound` trait that allows rounding to the nearest second
|
||||||
|
(@dekellum)
|
||||||
|
|
||||||
|
### Code Hygiene and Docs
|
||||||
|
|
||||||
|
* Docs! (@alatiera @kosta @quodlibetor @kennytm)
|
||||||
|
* Run clippy and various fixes (@quodlibetor)
|
||||||
|
|
||||||
## 0.4.0 (2017-06-22)
|
## 0.4.0 (2017-06-22)
|
||||||
|
|
||||||
This was originally planned as a minor release but was pushed to a major release
|
This was originally planned as a minor release but was pushed to a major
|
||||||
due to the compatibility concern raised.
|
release due to the compatibility concern raised.
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "chrono"
|
name = "chrono"
|
||||||
version = "0.4.0"
|
version = "0.4.1"
|
||||||
authors = ["Kang Seonghoon <public+rust@mearie.org>"]
|
authors = ["Kang Seonghoon <public+rust@mearie.org>"]
|
||||||
|
|
||||||
description = "Date and time library for Rust"
|
description = "Date and time library for Rust"
|
||||||
|
|
|
@ -18,6 +18,8 @@ use format::{parse, Parsed, ParseError, ParseResult, DelayedFormat, StrftimeItem
|
||||||
|
|
||||||
/// Specific formatting options for seconds. This may be extended in the
|
/// Specific formatting options for seconds. This may be extended in the
|
||||||
/// future, so exhaustive matching in external code is not recommended.
|
/// future, so exhaustive matching in external code is not recommended.
|
||||||
|
///
|
||||||
|
/// See the `TimeZone::to_rfc3339_opts` function for usage.
|
||||||
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
|
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
|
||||||
pub enum SecondsFormat {
|
pub enum SecondsFormat {
|
||||||
/// Format whole seconds only, with no decimal point nor subseconds.
|
/// Format whole seconds only, with no decimal point nor subseconds.
|
||||||
|
@ -39,6 +41,10 @@ pub enum SecondsFormat {
|
||||||
/// display all available non-zero sub-second digits. This corresponds to
|
/// display all available non-zero sub-second digits. This corresponds to
|
||||||
/// [Fixed::Nanosecond](format/enum.Fixed.html#variant.Nanosecond).
|
/// [Fixed::Nanosecond](format/enum.Fixed.html#variant.Nanosecond).
|
||||||
AutoSi,
|
AutoSi,
|
||||||
|
|
||||||
|
// Do not match against this.
|
||||||
|
#[doc(hidden)]
|
||||||
|
__NonExhaustive,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// ISO 8601 combined date and time with time zone.
|
/// ISO 8601 combined date and time with time zone.
|
||||||
|
@ -300,6 +306,8 @@ impl<Tz: TimeZone> DateTime<Tz> where Tz::Offset: fmt::Display {
|
||||||
use format::Pad::Zero;
|
use format::Pad::Zero;
|
||||||
use SecondsFormat::*;
|
use SecondsFormat::*;
|
||||||
|
|
||||||
|
debug_assert!(secform != __NonExhaustive, "Do not use __NonExhaustive!");
|
||||||
|
|
||||||
const PREFIX: &'static [Item<'static>] = &[
|
const PREFIX: &'static [Item<'static>] = &[
|
||||||
Item::Numeric(Year, Zero),
|
Item::Numeric(Year, Zero),
|
||||||
Item::Literal("-"),
|
Item::Literal("-"),
|
||||||
|
@ -320,6 +328,7 @@ impl<Tz: TimeZone> DateTime<Tz> where Tz::Offset: fmt::Display {
|
||||||
Micros => Some(Item::Fixed(Fixed::Nanosecond6)),
|
Micros => Some(Item::Fixed(Fixed::Nanosecond6)),
|
||||||
Nanos => Some(Item::Fixed(Fixed::Nanosecond9)),
|
Nanos => Some(Item::Fixed(Fixed::Nanosecond9)),
|
||||||
AutoSi => Some(Item::Fixed(Fixed::Nanosecond)),
|
AutoSi => Some(Item::Fixed(Fixed::Nanosecond)),
|
||||||
|
__NonExhaustive => unreachable!(),
|
||||||
};
|
};
|
||||||
|
|
||||||
let tzitem = Item::Fixed(
|
let tzitem = Item::Fixed(
|
||||||
|
@ -1177,6 +1186,14 @@ mod tests {
|
||||||
assert_eq!(ut.to_rfc3339_opts(AutoSi, true), "2018-01-11T02:05:13.084660Z");
|
assert_eq!(ut.to_rfc3339_opts(AutoSi, true), "2018-01-11T02:05:13.084660Z");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[should_panic]
|
||||||
|
fn test_rfc3339_opts_nonexhaustive() {
|
||||||
|
use SecondsFormat;
|
||||||
|
let dt = Utc.ymd(1999, 10, 9).and_hms(1, 2, 3);
|
||||||
|
dt.to_rfc3339_opts(SecondsFormat::__NonExhaustive, true);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_datetime_from_str() {
|
fn test_datetime_from_str() {
|
||||||
assert_eq!("2015-2-18T23:16:9.15Z".parse::<DateTime<FixedOffset>>(),
|
assert_eq!("2015-2-18T23:16:9.15Z".parse::<DateTime<FixedOffset>>(),
|
||||||
|
|
Loading…
Reference in New Issue