Skip to content

clickingbuttons/datetime

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

datetime

zig-version tests docs

Generic Date, Time, and DateTime library.

Installation

zig fetch --save "https://github.com/clickingbuttons/datetime/archive/refs/tags/0.14.0.tar.gz"

build.zig

const datetime = b.dependency("datetime", .{
    .target = target,
    .optimize = optimize,
});
your_lib_or_exe.root_module.addImport("datetime", datetime.module("datetime"));

Usage

Check out the demos. Here's a simple one:

const std = @import("std");
const datetime = @import("datetime");

test "now" {
    const date = datetime.Date.now();
    std.debug.print("today's date is {rfc3339}\n", .{ date });

    const time = datetime.Time.now();
    std.debug.print("today's time is {rfc3339}\n", .{ time });

    const nanotime = datetime.time.Nano.now();
    std.debug.print("today's nanotime is {rfc3339}\n", .{ nanotime });

    const dt = datetime.DateTime.now();
    std.debug.print("today's date and time is {rfc3339}\n", .{ dt });

    const NanoDateTime = datetime.datetime.Advanced(datetime.Date, datetime.time.Nano, false);
    const ndt = NanoDateTime.now();
    std.debug.print("today's date and nanotime is {rfc3339}\n", .{ ndt });
}

Features:

  • Convert to/from epoch subseconds using world's fastest known algorithm. 1
  • Choose your precision:
    • Date's Year type.
    • Time's Subsecond type.
    • Date's epoch for subsecond conversion.
    • Whether DateTime has an OffsetSeconds field
  • Durations with addition.
  • RFC3339 parsing and formatting.
  • Use Comptime dates for epoch math.

In-scope, PRs welcome:

  • Localization
  • Leap seconds

Why yet another date time library?

Footnotes

  1. Euclidean Affine Functions by Cassio and Neri.

About

Generic Date, Time, and DateTime library.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages