You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下如何分离时间格式与语言设置,实现自定义时间格式搭配英文星期/月份名称

Linux下如何分离时间格式与语言设置,实现自定义时间格式搭配英文星期/月份名称

我太懂这种纠结了——默认的LC_TIME把时间格式和语言硬绑在一起,想自定义格式又要保留英文的星期、月份名,自定义完整locale还容易搞崩不少应用,确实头疼。这里给你几个更靠谱的解决方案,亲测实用:

1. 直接用date命令的自定义格式(临时/脚本场景首选)

如果只是临时输出或者在脚本里用,完全不用改locale,直接给date指定格式参数就行:

date +"%Y-%m-%d, %A, %T %Z"

解释下各个参数:

  • %Y-%m-%d:年-月-日格式
  • %A:完整英文星期名(比如Monday)
  • %T:时分秒(24小时制,比如20:05:47)
  • %Z:时区缩写(比如CET)
    执行后直接输出你想要的YYYY-MM-DD, Monday, 20:05:47 CET格式,完美匹配需求。

2. 环境变量+应用单独配置(持久化场景)

如果想让日常使用的工具(比如Shell提示符、部分桌面应用)默认用这个格式,可以拆分两步:

  • 先设置LC_TIME=en_US.UTF-8,确保系统用英文的星期、月份名称。可以把这行加到~/.bashrc或~/.profile里持久生效:
    export LC_TIME=en_US.UTF-8
    
  • 然后针对不同工具单独配置时间格式:
    • Shell提示符:修改PS1变量,把时间格式嵌进去。比如在~/.bashrc里加:
      PS1='[\u@\h \D{%Y-%m-%d, %A, %T %Z}]$ '
      
      重启Shell后,提示符里的时间就会按你要的格式显示,且星期是英文。
    • 桌面应用:多数支持自定义时间格式的应用(比如日历、任务栏插件),可以直接在设置里输入格式字符串YYYY-MM-DD, A, HH:mm:ss z(具体参数看应用文档),配合LC_TIME=en_US.UTF-8就能显示英文名称。

3. 轻量自定义Locale(兼顾全局生效与兼容性)

如果你需要全局生效,又不想用完整自定义Locale的麻烦,可以只修改时间格式部分,保留英文语言包的其他内容:

  1. 复制默认英文Locale的配置文件到本地:
    cp /usr/share/i18n/locales/en_US ~/custom_en_US
    
  2. 编辑这个文件,找到d_t_fmt(日期时间格式)这一行,替换成你要的格式:
    d_t_fmt      "%Y-%m-%d, %A, %T %Z"
    
  3. 编译这个轻量自定义Locale:
    localedef -i ~/custom_en_US -f UTF-8 en_US.custom
    
  4. 测试生效:
    LC_TIME=en_US.custom date
    
    输出就是你要的格式,而且因为基础是英文Locale,几乎不会影响其他应用的兼容性。如果想全局生效,可以把export LC_TIME=en_US.custom加到你的Shell配置文件里。

这些方案都避开了LC_TIME绑定格式和语言的问题,不需要复杂的全局配置,也不会搞乱应用,比之前那些不适用的方法实用多了。

备注:内容来源于stack exchange,提问作者cprn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 13:43:16