diff options
author | data-man <datamanrb@gmail.com> | 2018-04-01 00:41:38 +0300 |
---|---|---|
committer | data-man <datamanrb@gmail.com> | 2018-04-01 00:41:38 +0300 |
commit | 759023e157806bf9cdeb9f442002367a55fb8698 (patch) | |
tree | 371e7fde17def8a852b5c75e4ba7860581635a99 | |
parent | 455dd3613559ef43fc7609580d7658ceaa7a36fe (diff) | |
download | Nim-759023e157806bf9cdeb9f442002367a55fb8698.tar.gz |
Comparing datetimes
-rw-r--r-- | lib/pure/times.nim | 12 | ||||
-rw-r--r-- | tests/stdlib/ttimes.nim | 10 |
2 files changed, 21 insertions, 1 deletions
diff --git a/lib/pure/times.nim b/lib/pure/times.nim index 6c1e1fe87..75b5bac43 100644 --- a/lib/pure/times.nim +++ b/lib/pure/times.nim @@ -274,6 +274,18 @@ proc toTime*(dt: DateTime): Time {.tags: [], raises: [], benign.} = # so we need to compensate for that here. result.inc dt.utcOffset +proc `<`*(a, b: DateTime): bool = + ## Returns true iff ``a < b``, that is iff a happened before b. + return a.toTime < b.toTime + +proc `<=` * (a, b: DateTime): bool = + ## Returns true iff ``a <= b``. + return a.toTime <= b.toTime + +proc `==`*(a, b: DateTime): bool = + ## Returns true if ``a == b``, that is if both dates represent the same point in datetime. + return a.toTime == b.toTime + proc initDateTime(zt: ZonedTime, zone: Timezone): DateTime = let adjTime = zt.adjTime.int64 let epochday = (if adjTime >= 0: adjTime else: adjTime - (secondsInDay - 1)) div secondsInDay diff --git a/tests/stdlib/ttimes.nim b/tests/stdlib/ttimes.nim index ae056a79f..8efc50086 100644 --- a/tests/stdlib/ttimes.nim +++ b/tests/stdlib/ttimes.nim @@ -367,4 +367,12 @@ suite "ttimes": check $(dt - 1.months) == "2017-02-15T00:00:00+00:00" dt = initDateTime(31, mMar, 2017, 00, 00, 00, utc()) # This happens due to monthday overflow. It's consistent with Phobos. - check $(dt - 1.months) == "2017-03-03T00:00:00+00:00" \ No newline at end of file + check $(dt - 1.months) == "2017-03-03T00:00:00+00:00" + + test "compare datetimes": + var dt1 = now() + var dt2 = dt1 + check dt1 == dt2 + check dt1 <= dt2 + dt2 = dt2 + 1.seconds + check dt1 < dt2 |