# mwtimestamp
[](https://crates.io/crates/mwtimestamp)
[](https://docs.rs/mwtimestamp)
[](https://doc.wikimedia.org/mwbot-rs/mwbot/mwtimestamp/)
[](https://gitlab.wikimedia.org/repos/mwbot-rs/mwbot/-/commits/main)
[](https://doc.wikimedia.org/cover/mwbot-rs/mwbot/coverage)
`mwtimestamp` is a library for parsing and formatting MediaWiki
timestamps, powered by [`chrono`](https://docs.rs/chrono).
The [MediaWiki API](https://www.mediawiki.org/w/api.php#main/datatype/timestamp)
typically produces ISO 8601 timestamps. In some cases, like protection or
block expiry, it may alternatively return the string "infinity" to represent
that there is no end period.
```rust
use mwtimestamp::{Expiry, Timestamp};
// Deserializing a fixed timestamp
let finite: Timestamp = serde_json::from_str("\"2001-01-15T14:56:00Z\"").unwrap();
assert_eq!(
finite.date_naive(),
chrono::NaiveDate::from_ymd_opt(2001, 1, 15).unwrap(),
);
// Deserializing an infinite timestamp
let infinity: Expiry = serde_json::from_str("\"infinity\"").unwrap();
assert!(infinity.is_infinity());
```
### Contributing
`mwtimestamp` is a part of the [`mwbot-rs` project](https://www.mediawiki.org/wiki/Mwbot-rs).
We're always looking for new contributors, please [reach out](https://www.mediawiki.org/wiki/Mwbot-rs#Contributing)
if you're interested!
## License
This crate is released under GPL-3.0-or-later.
See [COPYING](./COPYING) for details.