关于org-mode里显示<周一>与<一>的问题

advice还可以把韩文换成中文的

谢谢指点。。暂觉高深。。

方法有效:+1:

我都是统一用英文

方法有效 +1

System Info :computer:

  • OS: windows-nt
  • Emacs: 25.2.1
  • Spacemacs: 0.200.13
  • Spacemacs branch: nil (rev. nil)
  • Graphic display: t
  • Distribution: spacemacs
  • Editing style: vim
  • Completion: helm
  • Layers:

(setq system-time-locale "C") 设置前后,<format-time-string “%A”> 返回的是英文。

最终解决办法:

(setq system-time-locale "zh_CN.UTF-8")

1 个赞

我终于明白为什么

(insert (format-time-string “[%Y-%m-%d %a %T]”))

在windows上显示的 是周五,而在macos上显示的是 Fri 了。

在macos上time format的%asystem-time-locale 默认为nil时 是 Fri。为zh_CN.UTF-8时是

我也因为中英文格式的问题,最后用%w表示星期几,有点不直观,但统一了。 :sweat_smile:

你这中文双引号能执行通过?

可以尝试以下以下的配置代码: 我对结果还挺满意。

修改前:显示的时间戳为:<2015-04-30 四>

修改后:显示的时间戳为:<2015-04-30 星期四>

 #+BEGIN_SRC emacs-lisp 
   (setq org-time-stamp-formats '("<%Y-%m-%d %A>" . "<%Y-%m-%d %A %H:%M>"))
 #+END_SRC
1 个赞

这问题好长寿啊…

它的根源其实是 unix 和 windows 的 c 库函数实现不一致. 在同样的 locale(zh_CN.UTF-8) 下,

strftime(buf, buf_size, "%a", &tm_now);

这个函数在 windows 上会给出 周五, 在 linux 上则是 . Emacs 的 format-time-string 内部就是用这个函数格式化时间的 (实际上可能更复杂些, linux 上用的一般是 gnulib 里面的 nstrftime, 不过结论也一样).

所以说单纯把 locale 改成 zh_CN 不能解决问题. 倒是可以找找哪些 format 字符和 locale 的组合在两个平台实现一致. 比如前面提到的 format 用 “%A”, locale 用 zh_CN, 这样在两个平台应该都是 星期x. 或者统一用 Posix locale (也就是 “C”), 两个平台的 %a 都会统一成英文缩写.

:grinning:

我的使用中,在Windows10/11和Mac平台上的显示都是“星期X”,是一致的。

嗯, %A 这个是星期的全称, 看起来不同平台实现是一致的, 有问题的是 %a 这个星期的缩写.