Disclaimer: I am very much an elisp beginner. I'm sure there's a better way than this, but took the question as a bit of a personal challenge.
Here's my crack at it. I don't think the 'if' statement is working... It's meant to add an extra "-" if there's an odd number needed. I've run out of time however so can't fix it.
(defun my-pack-line ()
(interactive)
; Determine the blank spaces between end of line and fill-column value
(setq to-fill (- fill-column (progn (end-of-line) (current-column))))
; Put point to right of first timestamp
(move-to-column 18)
; Insert half of dashes here
(setq n-dashes (/ to-fill 2))
(insert " ")
(setq xx 1)
(while (< xx n-dashes)
(insert "-")
(setq xx (1+ xx)))
; Go to start of second timestamp
(end-of-line)
(setq xx 1)
(while (< xx 18)
(left-char)
(setq xx (1+ xx)))
; Insert remaining dashes
(if (oddp to-fill)
(setq xx 1)
(setq xx 0))
(insert " ")
(setq xx 1)
(while (< xx n-dashes)
(insert "-")
(setq xx (1+ xx))))