mirror of
https://github.com/sbrow/thor.git
synced 2026-10-25 02:01:56 -04:00
fix: fixed an offset issue with date formatting.
This commit is contained in:
@@ -124,15 +124,25 @@ format_rfc822 :: proc(iso: string, allocator := context.temp_allocator) -> strin
|
|||||||
buf: [8]byte
|
buf: [8]byte
|
||||||
t := time.to_string_hms(date, buf[:])
|
t := time.to_string_hms(date, buf[:])
|
||||||
|
|
||||||
|
// RFC-822 zone: sign followed by two-digit hours and minutes (e.g. +0000,
|
||||||
|
// +0530, -0800). offset is in minutes.
|
||||||
|
sign := '+'
|
||||||
|
off := offset
|
||||||
|
if off < 0 {
|
||||||
|
sign = '-'
|
||||||
|
off = -off
|
||||||
|
}
|
||||||
|
|
||||||
return fmt.aprintf(
|
return fmt.aprintf(
|
||||||
"%s, %02d %s %d %s %3d%2d",
|
"%s, %02d %s %d %s %c%02d%02d",
|
||||||
weekday[:3],
|
weekday[:3],
|
||||||
time.day(date),
|
time.day(date),
|
||||||
month[:3],
|
month[:3],
|
||||||
time.year(date),
|
time.year(date),
|
||||||
t,
|
t,
|
||||||
offset / 60,
|
sign,
|
||||||
offset % 60,
|
off / 60,
|
||||||
|
off % 60,
|
||||||
allocator = allocator,
|
allocator = allocator,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+18
-5
@@ -50,11 +50,24 @@ test_format_rfc822_short_passthrough :: proc(t: ^testing.T) {
|
|||||||
|
|
||||||
@(test)
|
@(test)
|
||||||
test_format_rfc822_full_date :: proc(t: ^testing.T) {
|
test_format_rfc822_full_date :: proc(t: ^testing.T) {
|
||||||
got := format_rfc822("2024-01-15T10:30:00Z")
|
// Results are temp-allocated (reset by the test runner), so no delete.
|
||||||
// Result is temp-allocated (reset by the test runner), so no delete.
|
// 2024-01-15 is a Monday; wall-clock time is preserved and the zone is
|
||||||
// 2024-01-15 is a Monday. Assert the stable leading portion; the trailing
|
// rendered as an RFC-822 ±HHMM offset.
|
||||||
// offset rendering is intentionally left unpinned here.
|
testing.expect_value(
|
||||||
testing.expect(t, strings.has_prefix(got, "Mon, 15 Jan 2024 10:30:00"), got)
|
t,
|
||||||
|
format_rfc822("2024-01-15T10:30:00Z"),
|
||||||
|
"Mon, 15 Jan 2024 10:30:00 +0000",
|
||||||
|
)
|
||||||
|
testing.expect_value(
|
||||||
|
t,
|
||||||
|
format_rfc822("2024-01-15T10:30:00+05:30"),
|
||||||
|
"Mon, 15 Jan 2024 10:30:00 +0530",
|
||||||
|
)
|
||||||
|
testing.expect_value(
|
||||||
|
t,
|
||||||
|
format_rfc822("2024-01-15T10:30:00-08:00"),
|
||||||
|
"Mon, 15 Jan 2024 10:30:00 -0800",
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user