随手记录点vim技巧(三)
vim 怎么快速插入 iso-8601 格式的时间戳?

Q: vim 怎么快速插入 iso-8601 格式的时间戳?

修改~/.vimrc,加入以下两行:

nmap <F8> i<C-R>=system('date --iso-8601=second')<CR><Esc>
imap <F8> <C-R>=system('date --iso-8601=second')<CR>

输出格式:

2018-02-01T15:26:36+08:00

vim 内置命令strftime("%FT%T%z")输出的结果是2018-02-01T15:26:36+0800,和 iso-8601 类似,但时区少了分割,不完全兼容。 故调用系统date命令。


Q:什么是 iso-8601 格式?

yyyy-mm-ddThh:mm:ss±hh:mm

  • 第一部分:完整年月日(完整意味着位数不够用 0 补齐,像2018-1-1这样,是不符合格式的)
  • T分割日期和时间
  • 第二部分:完整时分秒
  • 第三部分:时区偏移量(当地时间和 UTC 的偏差,可以带正号或负号)
  • 日期时间都是当地的时间,比如偏差量+08:00,反推 UTC 的时候应该是 UTC = localTime-8:00,这里有点反直觉。

Last modified on 2023-11-01