为什么在Excel中格式为“ h:mm:ss \ AM / PM”格式为24小时制?

而这个[$-409]h:mm:ss\ AM/PM;@不是,并且正确地显示AM / PM?

我正在使用NPOI从Excel文件读取并为我的应用程序提取一些有用的数据。 当我parsingdate的时候,我偶然发现了这个有趣的例子。

这个格式为[$-F400]h:mm:ss\ AM/PMdate为16:00:00 (4 o'clock in the afternoon)在excel中显示为16:00:00

然而,类似的格式, [$-409]h:mm:ss\ AM/PM;@ ,显示04:00:00 PM ,我相信这是正确的,因为在格式string的末尾有AM/PM符号。

我的Excel版本是这样的: Microsoft® Office Excel® 2007 (12.0.6665.5003) SP3 MSO (12.0.6662.5000)

我使用最新版本的NPOI(从源代码获得),它将[$-F400]h:mm:ss\ AM/PMhh:mm:ss tt (与excel的方式不匹配显示它)

我知道[$-XXXX]是语言环境,我不知道;@

为什么根据情况,excel完全忽略了AM/PM部分?

编辑:它似乎是AM/PM的文本占位符似乎。 是否缺less这个标志强迫excel显示24小时制?

正如@pnuts所评论的, 这个链接表示Excel使用一个特殊的序列作为系统默认值。

“原因是,Excel使用(系统默认的)(无文档)转义序列,这是date的[$ -F800],长时间的系统默认[$ -F400],系统默认的”。

NPOI完全忽略了区域设置信息,因为它作为parameter passing给DataFormatter 。 因此,不是使用系统默认值,而是parsing“AM / PM”部分,并显示12小时格式 ,而不是24小时系统默认值

在这种情况下,我通过更改库的源代码来解决我的问题,以满足我的需要。