In most cases, nil is assumed to be the current time. `time-subtract' is doing that here.
It could be "fixed" so
diff --git i/lisp/calendar/time-date.el w/lisp/calendar/time-date.el
index bbdcaa4db4..27ce10d7d6 100644
--- i/lisp/calendar/time-date.el
+++ w/lisp/calendar/time-date.el
@@ -200,5 +200,5 @@ time-since
;; Convert date strings to internal time.
(setq time (date-to-time time)))
- (time-subtract nil time))
+ (time-subtract nil (or time (current-time))))
;;;###autoload
but that would make the result inconsistent:
ELISP> (time-since nil)
(0 0 0 0)
ELISP> (time-since nil)
(0 0 1 0)
I'm not sure that's better. And you can always do
(time-since (or time (current-time)))