| Crates.io | timelib |
| lib.rs | timelib |
| version | 0.3.8 |
| created_at | 2023-05-07 20:11:56.091042+00 |
| updated_at | 2025-11-20 05:01:08.307532+00 |
| description | A small Rust wrapper around the timelib library. |
| homepage | https://github.com/westy92/timelib-rust |
| repository | https://github.com/westy92/timelib-rust.git |
| max_upload_size | |
| id | 859349 |
| size | 8,654,763 |
Timelib for Rust is a small Rust wrapper around the timelib library that is used to power PHP and MongoDB.
You can install with:
cargo add timelib
let tz = timelib::Timezone::parse("America/Chicago").expect("Error parsing timezone!");
timelib::strtotime("tomorrow", None, &tz);
timelib::strtotime("next tuesday", Some(1654318823), &tz);
View the tests for more examples.
This library works out-of-the-box on Alpine Linux (musl libc). The build system automatically detects musl targets and:
libm)On Alpine Linux:
apk add musl-dev
cargo build
cargo test
The generated re2c outputs are bundled and automatically used. If you wish to generate these files yourself, do the following:
re2c. You can install it easily on all major platforms:
apt-get install re2cbrew install re2cchoco install re2cre2c feature:
timelib = { version = "0.3", features = ["re2c"] }Make sure to check out all submodules.
Initial clone:
git clone --recurse-submodules https://github.com/westy92/timelib-rust
Post-clone:
git submodule init && git submodule update
You should now be able to run cargo build and cargo test.
If using the re2c feature, make sure to install re2c as described above. i.e. cargo test --features re2c.
git submodule update --remote
Make sure to regenerate the re2c outputs and bindings, then copy them to pregenerated/.
# Clean and build to generate fresh bindings
cargo clean
cargo build
# Copy generated bindings from build output
cp target/debug/build/timelib-*/out/bindings.rs pregenerated/bindings.rs
# Regenerate re2c outputs
cd ext/timelib/
make parse_date.c parse_iso_intervals.c
cp parse_date.c ../../pregenerated/
cp parse_iso_intervals.c ../../pregenerated/
Remove --dry-run to publish for real.
cargo publish --dry-run