为什么在Excel中格式为“ h:mm:ss \ AM / PM”格式为24小时制?
而这个[$-409]h:mm:ss\ AM/PM;@
不是,并且正确地显示AM / PM?
我正在使用NPOI从Excel文件读取并为我的应用程序提取一些有用的数据。 当我parsingdate的时候,我偶然发现了这个有趣的例子。
这个格式为[$-F400]h:mm:ss\ AM/PM
date为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/PM
为hh: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小时系统默认值
在这种情况下,我通过更改库的源代码来解决我的问题,以满足我的需要。