代码之家  ›  专栏  ›  技术社区  ›  jwaddell

如何获得C中当前区域设置的格式化日期和时间?

  •  0
  • jwaddell  · 技术社区  · 14 年前

    我应该调用什么C函数来获取程序执行所在区域的格式化日期和时间?

    我问这个问题是因为我在使用clamav守护程序API时遇到问题。这个 VERSION 命令返回最新病毒定义的日期和时间,但代码使用调用 ctime 格式化它。据我所知 CTIME 不根据当前区域设置设置设置日期时间的格式,并在返回的字符串中使用星期和月的英文缩写。这会导致问题,因为我的Java程序使用了CLAAV API 尊重当前的区域设置,因此希望周名和月名的日期具有本地缩写。

    日期时间格式必须与 ctime :

    www-mmm-dd-hh:mm:ss-年

    其中,www是工作日,mmm是以字母表示的月份,dd是月份的日期,hh:mm:ss是时间,yyyy是年份。

    我可以重写Java程序,总是假设英语日期,但我会更乐意提交补丁到CLAAV,因为这似乎是一个错误,在他们身边对我。

    1 回复  |  直到 14 年前
        1
  •  4
  •   Alex Martelli    14 年前

    strftime("%c", ... 应该为当前区域设置提供首选的日期和时间表示形式。或(仍然) strftime )你可以模仿 ctime 的格式,但使用 %b 对于当前区域设置月份缩写, %a 用于当前区域设置的工作日缩写,等等。

    推荐文章