我应该调用什么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提交补丁,因为它似乎是他们身边的错误。
答案 0 :(得分:4)
strftime("%c", ...
应该为您提供当前区域设置的首选日期和时间表示。或者(仍然使用strftime
)您可以模拟ctime
的格式,但%b
表示当前语言环境月缩写,%a
表示当前语言环境工作日缩写,依此类推