1685 Commits

Author SHA1 Message Date
Kang Seonghoon
2dbc11dcb1 0.2.3: Fixed a couple of outstanding bugs.
- `DateTime<Tz>` and `Date<Tz>` is now `Copy`/`Send` when
  `Tz::Offset` is `Copy`/`Send`. The implementations for them were
  mistakenly omitted. Fixes #25.

- `Local::from_utc_datetime` didn't set a correct offset.
  The tests for `Local` were lacking. Fixes #26.
v0.2.3
2015-02-27 13:08:20 +09:00
Kang Seonghoon
ffa86603ae 0.2.2: language & docs changes.
- `missing_docs` lint now checks for associated types.
v0.2.2
2015-02-27 00:24:06 +09:00
Kang Seonghoon
c11b6deb5a 0.2.1: language changes.
- `std::hash` has been renewed.

- `DelayedFormat` no longer has a redundant lifetime.
v0.2.1
2015-02-21 18:15:11 +09:00
Kang Seonghoon
e80501dcb3 forgot to update the docs for removal of Time... 2015-02-19 05:42:18 +09:00
Kang Seonghoon
be6a721be6 0.2.0: offset reform, new format/parse module, various cleanups.
Fixes #11 and #12.
The complete list of changes is available in [CHANGELOG.md].

[CHANGELOG.md]: https://github.com/lifthrasiir/rust-chrono/blob/master/CHANGELOG.md#020-2015-02-19
v0.2.0
2015-02-19 05:12:03 +09:00
Kang Seonghoon
6a9490522e updated docs for RFC2822/3339 and added ChangeLog. 2015-02-19 05:08:00 +09:00
Kang Seonghoon
30322bbc89 added parse_from_rfc{2822,3339}/to_rfc{2822,3339} methods to DateTime. 2015-02-19 04:57:21 +09:00
Kang Seonghoon
82c9345a4d okay, new DateTime::time was incorrect. 2015-02-19 04:28:38 +09:00
Kang Seonghoon
f39b13a14c removed timezone-aware Time type.
`Time` with an associated time zone is in principle possible, but
in practice it can only meaningfully constructed from an existing
`DateTime`. this makes it hard to implement other operations
natural to `NaiveTime` for `Time` (e.g. `with_*` methods), so
we simply let it go.

migration path: if you *do* happen to use `Time`, don't panic!
every operation possible to `Time` is much more possible to
`NaiveTime`. if you have to deal with a local time, first combine
it with a `NaiveDate`, convert it via `TimeZone::from_local_datetime`
then extract `Time` part again.
2015-02-19 04:17:27 +09:00
Kang Seonghoon
e997403c10 num_seconds_from_unix_epoch is gone, long live timestamp!
this is partly because... we are using the simple name `timestamp`
in the `Parsed` anyway. that value is so widespread enough that
its name can be simply THE timestamp. old methods have been marked
deprecated.
2015-02-19 02:45:29 +09:00
Kang Seonghoon
c1d0b0279f various doc cleanups; added FromStr impl for DateTime<Local>.
also made a small script for auto-generating `README.md` out of
the main doc comment from `src/lib.rs`.
2015-02-19 02:21:52 +09:00
Kang Seonghoon
664c4d0191 merged the new offset design branch. 2015-02-19 01:48:29 +09:00
Kang Seonghoon
a4f5d19d24 mass renaming from offset/state to timezone/offset. 2015-02-19 00:30:13 +09:00
Kang Seonghoon
e43cb62f10 initial implementation of Offset redesign (#11).
- We have splitted `Offset` into `Offset` and `OffsetState` (name
  changes in consideration). The former is used to construct and convert
  local or UTC date, and the latter is used to store the UTC offset
  inside constructed values. Some offsets are their own states as well.

- This uses lots of associated types which implementation is still in
  flux. Currently it crashes with debuginfo enabled. We've temporarily
  disabled debuginfo from `Cargo.toml`.

- This technically allows a conversion to the local time, but not yet
  tested.
2015-02-19 00:25:04 +09:00
Kang Seonghoon
46996e35e1 implemented FromStr for DateTime<FixedOffset/UTC>. 2015-02-19 00:03:58 +09:00
Kang Seonghoon
76b0873722 added FromStr impls to naive date and time types.
also, previously `Numeric::Nanosecond` had a special left-aligned
parsing behavior. this commit replaces that with a newly designated
`Fixed::Nanosecond` which also handles an empty string which is
possible with an integral number of seconds.
2015-02-18 23:27:12 +09:00
Kang Seonghoon
ca865e3c24 added more tests for non-four-digit years and fixed edge cases. 2015-02-18 00:00:30 +09:00
Kang Seonghoon
0399ba1849 weakened the non-negative requirement of year/isoyear fields.
accepts ISO 8601-ish `+YYYYY` or `-YYYYY` notations. this is needed
for the bijectivity of `to_string` and an upcoming `from_str`.
2015-02-17 22:18:39 +09:00
Kang Seonghoon
3f211dfe5f rewrote the date resolution algorithm.
this is most importantly required for negative years in `Parsed`,
which the current parser doesn't generate but is nevertheless
possible in principle. also updates tests for new fields.
2015-02-16 02:16:47 +09:00
Kang Seonghoon
637784c8ef renamed from_str methods to parse_from_str.
so that we can safely implement `FromStr` traits for those types.
also updates READMEs and rewires `%+` specifier of `StrftimeItems`
to a new RFC 3339 formatting item.
2015-02-15 21:27:12 +09:00
Kang Seonghoon
6937470405 created format::parse module.
this new module encompasses John Nagle's original RFC 2822 and 3337
parsers, updated to fully compatible to the actual standard.
the contributed `parse` module has been merged into it.
2015-02-15 21:02:44 +09:00
Kang Seonghoon
c7f132cca2 added format_with_items methods to every types. 2015-02-14 12:34:31 +09:00
Kang Seonghoon
292faa0b23 temporarily merged PR #24, to be fully integrated later. 2015-02-13 21:18:35 +09:00
Kang Seonghoon
25b8e21d29 separated a format::scan module from the parser.
also changes the behavior of `Numeric::Nanosecond` (`%f`) to
the left-aligned digits and allows for the wider range of time zone
offsets from -99:59 to +99:59.
2015-02-13 18:46:02 +09:00
Kang Seonghoon
2e7a213818 0.1.18: language changes.
- Replaced remaining occurrences of Show with Debug.
- Dependency upgrades.
v0.1.18
2015-02-07 01:16:05 +09:00
Kang Seonghoon
82c63e5b40 0.2.0-dev: date/time parsing.
Basically, this should close #12 when officially released.

- Formatting syntax is now refactored out of the rendering logic.
  The main syntax is available in the `format::strftime` module,
  which also serves as a documentation for the syntax.

- A parser (modelled after `strptime(3)`) has been implemented.
  See the individual commits for the detailed implementation.

- There are two ways to get a timezone-aware value from a string:
  `Offset` or `DateTime<FixedOffset>`. The former should be used
  when the offset is known in advance (e.g. assume the local date)
  while the latter should be used when the offset is unknown.
  Naive types have a simple `from_str` method.

- There are some known problems with the parser (even after
  tons of tests), which will be sorted out in 0.2. Known issues:

  - This does not exactly handle RFC 2822 and RFC 3339, which
    subtly differs from the current implementation in
    case-sensitivity, whitespace handling and legacy syntax.
    I'd like to integrate #24 for this cause.

  - Time zone names are not recognized at all. There is even
    no means to get a name itself, not sure about the resolution.

  - `Parsed` does *not* constrain `year` to be non-negative,
    so manually prepared `Parsed` may give a negative year.
    But the current verification pass may break such cases.

  - I absolutely don't know about the parser's performance!

- `AUTHORS.txt` has been added, for what it's worth.
2015-02-05 02:53:19 +09:00
Kang Seonghoon
7eb9a1a983 public interfaces for parser are now available. 2015-02-05 02:16:35 +09:00
Kang Seonghoon
9768b57494 reworked new format APIs to return a proper Result and error code. 2015-02-05 00:54:25 +09:00
Kang Seonghoon
aebcedf37b added format::parse and accompanying tests. 2015-02-04 16:31:37 +09:00
Kang Seonghoon
dfa92ef56d better handling (and bug fixes) of leap seconds in format::parsed. 2015-02-04 16:23:04 +09:00
Kang Seonghoon
b8a2ad2220 massive tests and bug fixes for format::parsed. 2015-02-04 16:23:04 +09:00
Kang Seonghoon
02b4c72f22 initial format::parsed implementation. 2015-02-04 16:22:41 +09:00
Kang Seonghoon
3d00a0fd5a added checked_{add,sub} methods to [Naive]Date[Time] types.
- Existing `+` and `-` operators use them, and properly panics with
  a correct error message on overflow/underflow.
2015-02-04 16:19:54 +09:00
Kang Seonghoon
43ee68b522 new formatter design!
- Format string is internally represented as a series of formatting
  items. Items can be directly given to now-public `format::format`
  function as well.

- Format string parser is separated to `format::strftime` module.
  This is to allow for potentional alternative formatting syntaxes.

- `DelayedFormat` now receives an iterator for formatting items.
2015-02-04 16:19:54 +09:00
Kang Seonghoon
98d1ce01c9 language changes: replaced remaining occurrences of Show with Debug. 2015-02-04 16:17:35 +09:00
John Nagle
dd4f679411 Avoid duplicate import of regex macros, which causes problems with linking
the crate into an enclosing crate.
2015-02-02 11:43:03 -08:00
John Nagle
a8c866d1ea Use explicit versions for regex and regex_macros. Avoid using undocumented "*" feature. 2015-02-01 22:24:50 -08:00
Kang Seonghoon
36181b65ca 0.1.17: language changes.
- Many unstable stdlib parts require `#[feature]` flags as per
  Rust RFC #507.
v0.1.17
2015-01-30 00:03:19 +09:00
Kang Seonghoon
7087cd156a 0.1.16: dependency fixes due to language changes. v0.1.16 2015-01-29 08:47:05 +09:00
John Nagle
3566c3a793 Change names of parsing functions for consistency with "chrono".
All tests pass.
2015-01-26 23:11:09 -08:00
John Nagle
203b455569 Added parsing functions for standard date formats. Tests run.
Some functions will now be renamed for consistency with the
chrono crate.
2015-01-26 22:47:25 -08:00
Kang Seonghoon
cf5e2f322f 0.1.15: language changes.
- `std::fmt::Show` is now `std::fmt::Debug`.
- `std::fmt::String` is now `std::fmt::Display`.
v0.1.15
2015-01-24 17:45:12 +09:00
Kang Seonghoon
45765ebd13 0.1.14: fixed a missing String impl for Local.
Fixes #20. Thanks to @daboross.
v0.1.14
2015-01-10 12:32:54 +09:00
Kang Seonghoon
ca84749869 0.1.13: language changes and fmt::String supports.
- Every type modulo `LocalResult` and `Offset` now implements
  `std::fmt::String`, so `.to_string()` can be used.
  The exact format has been changed for better looking output.

- `std::fmt::Show` are intended for "stricter" output,
  which mostly means the strict ISO 8601 format.
  `DelayedFormat` also implements this, but only for inspection.

- `Offset` should implement `Show` but can omit `String`.
  The old `name` method is merged into `String` implementations.
v0.1.13
2015-01-10 03:27:24 +09:00
Kang Seonghoon
d79c460fc4 0.1.12: language changes, removed ops for Duration in the lhs.
- Feature flags used are all accepted.
- Orphan check workaround is no longer required.
- Impl reachability rules prevent the addition of `Duration + others`,
  as `Duration` is not implemented in this crate. Removed the impl;
  use `others + Duration` as a workaround.
v0.1.12
2015-01-08 02:08:41 +09:00
Kang Seonghoon
e97993d76a 0.1.11: language changes.
- Boxed closures are gone; some unboxed closures require an explicit
  annotation for kinds (`&:` in most cases).
v0.1.11
2015-01-06 22:38:37 +09:00
Kang Seonghoon
883b656d49 0.1.10: language changes.
- `std::str::SendStr` is now `std::string::CowString<'static>`.
v0.1.10
2015-01-06 10:44:08 +09:00
Kang Seonghoon
5615d4de34 Merge pull request #18 from daboross/fix-sendstr-for-ad9e75938
Fix building against latest rust nightly - rustc version ad9e75938
2015-01-06 10:41:28 +09:00
David Ross
1b04bc3697 Fixed build against lastest rust nightly, ad9e75938.
- updated all usages of SendStr to CowString<'static>
2015-01-06 00:20:40 +00:00
Kang Seonghoon
e2ddee2f76 0.1.9: language changes.
- `Add` and `Sub` switches to associated types.
v0.1.9
2015-01-05 18:31:15 +09:00