首页 > 解决方案 > GetDateFormat 返回无效的 ky-KG 短日期(吉尔吉斯 - 吉尔吉斯斯坦)

问题描述

Windows 报告LOCALE_SShortDateky-KG 的“短日期”格式 ( ) 是:

d-MMM yy

日期格式字符串包含图片代码。其他图片代码为d, dd, ddd, dddd, M, MM, MMM, MMMM, yy, yyyy.

对于英国人,使用该日期格式的结果字符串将是:

16-Oct 21
\/ \_/ \/
d  MMM yy

因为MMM是指“由 LOCALE_SABBREVMONTHNAME 值指定的缩写月份,例如,英语(美国)中的“Oct”。”*

对于英语语言环境,那些“缩写月份名称”将是:

区域信息 价值
LOCALE_SABBREVMONTHNAME1
LOCALE_SABBREVMONTHNAME2 二月
LOCALE_SABBREVMONTHNAME3 三月
LOCALE_SABBREVMONTHNAME4 四月
LOCALE_SABBREVMONTHNAME5 可能
LOCALE_SABBREVMONTHNAME6
LOCALE_SABBREVMONTHNAME7 七月
LOCALE_SABBREVMONTHNAME8 八月
LOCALE_SABBREVMONTHNAME9 九月
LOCALE_SABBREVMONTHNAME10 十月
LOCALE_SABBREVMONTHNAME11 十一月
LOCALE_SABBREVMONTHNAME12 十二月

您可以使用GetDateFormat函数为您返回一个日期,该日期遵循英语的缩写月份名称。

因此,要使用格式字符串格式化日期d-MMM yy,请使用en-US您可以调用的语言环境:(伪代码)

GetDateFormat(1033, LOCALE_NOUSEROVERRIDE, &systemTime, "d-MMM yy", buffer, bufferLen);

返回格式的格式化字符串:

现在是吉尔吉斯斯坦

吉尔吉斯的月份使用不同的缩写;这是有道理的,因为他们不会说英语:

区域信息 价值
LOCALE_SABBREVMONTHNAME1 燧发
LOCALE_SABBREVMONTHNAME2 фев
LOCALE_SABBREVMONTHNAME3 马拉
LOCALE_SABBREVMONTHNAME4 回复
LOCALE_SABBREVMONTHNAME5 关注
LOCALE_SABBREVMONTHNAME6 埃西恩
LOCALE_SABBREVMONTHNAME7 关注
LOCALE_SABBREVMONTHNAME8 一个
LOCALE_SABBREVMONTHNAME9 西恩
LOCALE_SABBREVMONTHNAME10 окт
LOCALE_SABBREVMONTHNAME11 ㄧㄟ
LOCALE_SABBREVMONTHNAME12 格格

当我尝试对区域设置相同的GetDateFormat调用ky-KG时:

GetDateFormat(1088, LOCALE_NOUSEROVERRIDE, &systemTime, "d-MMM yy", buffer, bufferLen);

我得到一个格式化的日期字符串:

注意那里的额外.内容。

这与短日期格式字符串不匹配:

这是一个错误,但如何解决它?

如果 Windows 告诉我:

为什么 Windows 会生成一个 Windows 说该字符串应该看起来像的字符串?

当您尝试解析 Windows 生成的日期时会很痛苦,而 Windows 生成的日期与 Windows 所说的格式不匹配。

发生了什么事,我如何以中立的方式解决它?

视窗 10.0.19043.1237

奖金喋喋不休

吉尔吉斯斯坦是唯一在短期内不使用MM即数字)的语言环境。

保加利亚和土库曼斯坦有一个包含固定后缀的短日期格式:

整洁的!我不知道后缀缩写代表什么;但它看起来很整洁。

奖金阅读

标签: windowsdatelocalizationinternationalization

解决方案


推荐阅读