如何在C中获取当前语言环境的格式化日期和时间?

时间:2010-05-06 04:06:54

标签: c datetime formatting locale ctime

我应该调用什么C函数来获取正在执行程序的语言环境的格式化日期和时间?

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

日期时间格式必须与ctime生成的格式相同:

  

Www Mmm dd hh:mm:ss yyyy

     

其中Www是工作日,Mmm是月份​​的字母,dd是月份的日期,hh:mm:是时间,是yyyy年份。

我可以重写Java程序以总是假设英语日期,但我更乐意向ClamAV提交补丁,因为它似乎是他们身边的错误。

1 个答案:

答案 0 :(得分:4)

strftime("%c", ...应该为您提供当前区域设置的首选日期和时间表示。或者(仍然使用strftime)您可以模拟ctime的格式,但%b表示当前语言环境月缩写,%a表示当前语言环境工作日缩写,依此类推