Add DateTime
This commit is contained in:
parent
f28f71c978
commit
b1190ddea8
2 changed files with 51 additions and 0 deletions
49
src/util/DateTime.zig
Normal file
49
src/util/DateTime.zig
Normal file
|
@ -0,0 +1,49 @@
|
|||
const DateTime = @This();
|
||||
|
||||
const std = @import("std");
|
||||
|
||||
seconds_since_epoch: i64,
|
||||
|
||||
pub fn now() DateTime {
|
||||
return .{ .seconds_since_epoch = std.time.timestamp() };
|
||||
}
|
||||
|
||||
pub fn epochSeconds(value: DateTime) std.time.epoch.EpochSeconds {
|
||||
return .{ .secs = @intCast(u64, value.seconds_since_epoch) };
|
||||
}
|
||||
|
||||
pub fn year(value: DateTime) std.time.epoch.Year {
|
||||
return value.epochSeconds().getEpochDay().calculateYearDay().year;
|
||||
}
|
||||
|
||||
pub fn month(value: DateTime) std.time.epoch.Month {
|
||||
return value.epochSeconds().getEpochDay().calculateYearDay().calculateMonthDay().month;
|
||||
}
|
||||
|
||||
pub fn day(value: DateTime) u9 {
|
||||
return value.epochSeconds().getEpochDay().calculateYearDay().calculateMonthDay().day;
|
||||
}
|
||||
|
||||
pub fn hour(value: DateTime) u5 {
|
||||
return value.epochSeconds().getDaySeconds().getHoursIntoDay();
|
||||
}
|
||||
|
||||
pub fn minute(value: DateTime) u6 {
|
||||
return value.epochSeconds().getDaySeconds().getMinutesIntoHour();
|
||||
}
|
||||
|
||||
pub fn second(value: DateTime) u6 {
|
||||
return value.epochSeconds().getDaySeconds().getSecondsIntoMinute();
|
||||
}
|
||||
|
||||
pub fn format(value: DateTime, comptime _: []const u8, _: std.fmt.FormatOptions, writer: anytype) !void {
|
||||
return std.fmt.format(
|
||||
writer,
|
||||
"{}-{}-{}T{}{}{}",
|
||||
.{ value.year(), value.month().numeric(), value.day(), value.hour(), value.minute(), value.second() },
|
||||
);
|
||||
}
|
||||
|
||||
pub fn jsonStringify(value: DateTime, _: std.json.StringifyOptions, writer: anytype) !void {
|
||||
try std.fmt.format(writer, "\"{}\"", .{value});
|
||||
}
|
|
@ -1,9 +1,11 @@
|
|||
pub const ciutf8 = @import("./ciutf8.zig");
|
||||
pub const Uuid = @import("./Uuid.zig");
|
||||
pub const DateTime = @import("./DateTime.zig");
|
||||
pub const PathIter = @import("./PathIter.zig");
|
||||
|
||||
test {
|
||||
_ = ciutf8;
|
||||
_ = Uuid;
|
||||
_ = PathIter;
|
||||
_ = DateTime;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue