我喜欢创建看起来像的标题
** WW47 (Monday November 18 - Sunday November 24, 2013)
我知道如何在 emacs/elisp 中使用 format-time-string 等来确定周数(%U、%V、%W)的各种定义。
问:我怎样才能倒退?在 emacs/elisp 中,确定一周的第一天和最后一天的日期,给定年份和周数?
更一般地,解析时间字符串,例如 ISO 8601 周日期
2006-W52-7
,或一周内没有一天的一周 2013-W46
.更普遍的是 - 许多日期和时间表示暗示日期间隔。周和月尤其意味着间隔,尽管我认为给定精度的几乎任何时间表示都可以解释为对应于小于精度的时间单位间隔。
问:是否有(合理标准的)emacs/elisp 函数来确定一个月的第一个和最后一个日期,例如年/年格式?等等。
——
这篇文章主要是“我如何在 emacs/elisp 中做到这一点?”题。
这类问题似乎很常见——stackoverflow 上也有类似的问题,询问“我如何在 Javascript/C#/... 中执行此操作”等等等等。
我可以自己做数学。但是 (a) 如果有一个标准的 emacs/elisp 函数来做到这一点会更好,并且 (b) 从谷歌搜索中可以明显看出存在许多陷阱和问题,进一步强调使用标准库函数的好处,如果存在的话。
例如。 Getting first date in week given a year and weeknumber
最佳答案
我有一个类似的问题(见 https://emacs.stackexchange.com/questions/43984/convert-between-iso-week-and-a-normal-date)。
在 https://emacs.stackexchange.com/questions/43984/convert-between-iso-week-and-a-normal-date 上使用我的解决方案,您的第一个问题的解决方案如下。
例子:
(iso-header 2018 32)
"** WW32 (Monday August 06 - Sunday August 12, 2018)"
(iso-header 2018 53)
"** WW01 (Monday December 31 - Sunday January 06, 2019)"
(defun iso-header(year week)
(concat
(format-time-string "** WW%V (%A %B %d - " (iso-beginning-of-week year week))
(format-time-string "%A %B %d, %Y)" (iso-end-of-week year week))))
关于emacs - ISO emacs/elisp 用于确定与一周的第一天/最后一天相对应的日期,例如ISO 8601 2013-WW47,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20055504/