用 %H 格式化时间差
format time difference with %H
如何格式化使用 time-subtract
计算的时差值?考虑这个简单的例子:
(let*
((before (current-time))
(after (progn (sit-for 0.25) (current-time)))
(diff (time-subtract after before)))
(insert (format "before: %s--%s\n" before (format-time-string "%Hh%Mm%S.%3Ns" before)))
(insert (format "after: %s--%s\n" after (format-time-string "%Hh%Mm%S.%3Ns" after)))
(insert (format "diff: %s--%s--%s\n" diff (format-time-string "%s.%3Ns" diff)
(format-time-string "%Hh%Mm%S.%3Ns" diff))))
评估它会插入以下内容:
之前:(22616 21856 296901 800000)--13h47m12.296s
之后:(22616 21856 552345 800000)--13h47m12.552s
差异:(0 0 255444 0)--0.255s--16h00m00.255s
两个时间戳相差250ms左右。但是使用 format-time-string
和格式字符串 "%Hh%Mm%S.%3Ns"
对其进行格式化会产生 16。
不应该是0吗?
"16"
来自您所在的时区。
我想如果你这样做 (format-time-string "%Hh%Mm%S.%3Ns" diff 0)
,你会看到你预期的结果(即 0
)。
如何格式化使用 time-subtract
计算的时差值?考虑这个简单的例子:
(let*
((before (current-time))
(after (progn (sit-for 0.25) (current-time)))
(diff (time-subtract after before)))
(insert (format "before: %s--%s\n" before (format-time-string "%Hh%Mm%S.%3Ns" before)))
(insert (format "after: %s--%s\n" after (format-time-string "%Hh%Mm%S.%3Ns" after)))
(insert (format "diff: %s--%s--%s\n" diff (format-time-string "%s.%3Ns" diff)
(format-time-string "%Hh%Mm%S.%3Ns" diff))))
评估它会插入以下内容:
之前:(22616 21856 296901 800000)--13h47m12.296s 之后:(22616 21856 552345 800000)--13h47m12.552s 差异:(0 0 255444 0)--0.255s--16h00m00.255s
两个时间戳相差250ms左右。但是使用 format-time-string
和格式字符串 "%Hh%Mm%S.%3Ns"
对其进行格式化会产生 16。
不应该是0吗?
"16"
来自您所在的时区。
我想如果你这样做 (format-time-string "%Hh%Mm%S.%3Ns" diff 0)
,你会看到你预期的结果(即 0
)。