Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/leroycep/zig-tzif
TZif parsing for Zig
https://github.com/leroycep/zig-tzif
Last synced: 30 days ago
JSON representation
TZif parsing for Zig
- Host: GitHub
- URL: https://github.com/leroycep/zig-tzif
- Owner: leroycep
- License: mit
- Created: 2021-02-12T21:13:42.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2024-07-26T03:33:17.000Z (5 months ago)
- Last Synced: 2024-08-03T23:19:07.639Z (4 months ago)
- Language: Zig
- Size: 160 KB
- Stars: 7
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-zig - leroycep/zig-tzif
- awesome-zig - zig-tzif🗒️TZif parsing for Zig
README
# Zig TZif
This repository implements TZif parsing, according to [RFC 8536][].
[rfc 8536]: https://datatracker.ietf.org/doc/html/rfc8536
## Usage
Take a look at the [examples][] to get an idea of this library works. I
recommend starting with the [localtime][] example.[examples]: ./examples/
[localtime]: ./examples/localtime.zig### Add it as a package
To start, add zig-tzif to your `build.zig.zon`:
```zig
.{
.name = "your-project",
.version = "0.1.0",
.dependencies = .{
.tzif = .{
.url = "https://github.com/leroycep/zig-tzif/archive/fdac55aa9b4a59b5b0dcba20866b6943fc00765d.tar.gz",
.hash = "1220459c1522d67e7541b3500518c9db7d380aaa962d433e6704d87a21b643502e69",
},
},
}
```Then, add `zig-tzif` to executable (or library) in the `build.zig`:
```zig
const Build = @import("std").Build;pub fn build(b: *Build) void {
const target = b.standardTargetOptions(.{});
const optimize = b.standardOptimizeOption(.{});// Get the tzif dependency
const tzif = b.dependency("tzif", .{
.target = target,
.optimize = optimize,
});const exe = b.addExecutable(.{
.name = "tzif",
.root_source_file = .{ .path = "tzif.zig" },
.target = target,
.optimize = optimize,
});// Add it as a module
exe.addModule("tzif", tzif.module("tzif"));b.installArtifact(exe);
}```
### Useful functions
#### `tzif.parseFile(allocator, filename) !TimeZone`
#### `tzif.parse(allocator, reader, seekableStream) !TimeZone`
#### `TimeZone.localTimeFromUTC(this, utc_timestamp) ?ConversionResult`
## Caveats
- This library has not been rigorously tested, it might not always produce the
correct offset, especially for time zones that have changed between
different Daylight Savings schemes.
- Does not support version 1 files. Files must be version 2 or 3.