Compare commits

...

3 Commits
0.5.1 ... main

Author SHA1 Message Date
a9308cbaf3 Add ISO8601 date format (yyyy-MM-dd) to parseIso8601 utility function. 2023-02-28 23:25:44 -06:00
f4e392f910 Update for Nim 1.3.1
Change `startOfDay` and `trimNanoSec` to use `initDateTime` instead of
mutating the new copy via the deprecated property accessors.

Updated the test suite to reflect functions that moved from this library
to the standard library. We're still testing the expected functionality
to make sure that the contract is maintained for users of this library.
2021-07-17 09:45:39 -05:00
600747e1ac Update for Nim 1.0.0 - Added format for Durations. Remove deprecated functions. 2020-02-14 12:22:05 -06:00
3 changed files with 31 additions and 28 deletions

View File

@ -14,27 +14,27 @@ suite "timeutils":
test "DateTime difference": test "DateTime difference":
var t1 = getTime().local var t1 = getTime().local
var t2 = t1 + 30.seconds var t2 = t1 + 30.seconds
check timeutils.`-`(t2, t1) == initDuration(seconds = 30) check t2 - t1 == initDuration(seconds = 30)
t1 = parse("2016-10-10 09:45:00", "yyyy-MM-dd HH:mm:ss") t1 = parse("2016-10-10 09:45:00", "yyyy-MM-dd HH:mm:ss")
t2 = parse("2016-10-11 09:45:00", "yyyy-MM-dd HH:mm:ss") t2 = parse("2016-10-11 09:45:00", "yyyy-MM-dd HH:mm:ss")
check timeutils.`-`(t2, t1) == initDuration(seconds = 24 * 60 * 60) check t2 - t1 == initDuration(seconds = 24 * 60 * 60)
t2 = parse("2016-10-11 10:00:00", "yyyy-MM-dd HH:mm:ss") t2 = parse("2016-10-11 10:00:00", "yyyy-MM-dd HH:mm:ss")
check timeutils.`-`(t2, t1) == initDuration(seconds = (24 * 60 + 15) * 60) check t2 - t1 == initDuration(seconds = (24 * 60 + 15) * 60)
test "DateTime comparisons": test "DateTime comparisons":
let t1 = getTime().local let t1 = getTime().local
check: check:
timeutils.`<`(t1, t1 + 10.seconds) not (t1 < t1)
not timeutils.`<`(t1 + 10.seconds, t1) t1 < t1 + 10.seconds
not timeutils.`<`(t1, t1) not (t1 + 10.seconds < t1)
t1 <= t1
t1 <= t1 + 10.seconds
not (t1 + 10.seconds <= t1)
timeutils.`<=`(t1, t1 + 10.seconds)
timeutils.`<=`(t1, t1)
not timeutils.`<=`(t1 + 10.seconds, t1)
t1.between(t1 - 10.seconds, t1 + 10.seconds) t1.between(t1 - 10.seconds, t1 + 10.seconds)
t1.between(t1, t1 + 10.seconds) # start is inclusive t1.between(t1, t1 + 10.seconds) # start is inclusive
not t1.between(t1 - 10.seconds, t1) # end is exclusive not t1.between(t1 - 10.seconds, t1) # end is exclusive

View File

@ -2,6 +2,7 @@ import times
const zeroTime = fromUnix(0) const zeroTime = fromUnix(0)
const ISO_8601_FORMATS = @[ const ISO_8601_FORMATS = @[
"yyyy-MM-dd",
"yyyy-MM-dd'T'HH:mm:ssz", "yyyy-MM-dd'T'HH:mm:ssz",
"yyyy-MM-dd'T'HH:mm:sszzz", "yyyy-MM-dd'T'HH:mm:sszzz",
"yyyy-MM-dd'T'HH:mm:ss'.'fffzzz", "yyyy-MM-dd'T'HH:mm:ss'.'fffzzz",
@ -14,15 +15,9 @@ proc format*(ti: TimeInterval, fmt: string): string =
let info = (zeroTime + ti).utc let info = (zeroTime + ti).utc
return info.format(fmt) return info.format(fmt)
# Will be deprecated in Nim 0.18.1 as it will exist in the standard times module. proc format*(d: Duration, fmt: string): string =
proc `-`*(a, b: DateTime): Duration {.deprecated} = let info = (fromUnix(0) + d).utc
return times.`-`(a,b) return info.format(fmt)
proc `<`*(a, b: DateTime): bool {.deprecated} =
return times.`<`(a,b)
proc `<=`*(a, b: DateTime): bool {.deprecated} =
return times.`<=`(a,b)
proc `<`*(a, b: TimeInterval): bool = proc `<`*(a, b: TimeInterval): bool =
return (zeroTime + a) < (zeroTime + b) return (zeroTime + a) < (zeroTime + b)
@ -39,15 +34,24 @@ proc cmp*(a, b: DateTime): int =
else: return 1 else: return 1
proc startOfDay*(dt: DateTime): DateTime = proc startOfDay*(dt: DateTime): DateTime =
result = dt result = initDateTime(
result.hour = 0 dt.monthday,
result.minute = 0 dt.month,
result.second = 0 dt.year,
result.nanosecond = 0 0, 0, 0, 0, # hour, minute, second, nanosecond
dt.timezone)
proc trimNanoSec*(dt: DateTime): DateTime = proc trimNanoSec*(dt: DateTime): DateTime =
result = dt result = dt
result.nanosecond = 0 result = initDateTime(
dt.monthday,
dt.month,
dt.year,
dt.hour,
dt.minute,
dt.second,
0,
dt.timezone)
proc startOfWeek*(ti: DateTime, startDay = dMon): DateTime = proc startOfWeek*(ti: DateTime, startDay = dMon): DateTime =
var diff = (ti.weekday.ord - startDay.ord) var diff = (ti.weekday.ord - startDay.ord)

View File

@ -1,11 +1,10 @@
# Package # Package
version = "0.5.1" version = "0.5.4"
author = "Jonathan Bernard" author = "Jonathan Bernard"
description = "Utility methods to fill in the lacking time support in Nim\'s stdlib." description = "Utility methods to fill in the lacking time support in Nim\'s stdlib."
license = "BSD3" license = "BSD3"
# Dependencies # Dependencies
requires "nim >= 0.19.0" requires "nim >= 1.3.1"