然而这一个[$-409]h:mm:ss\ AM/PM;@
不是,并正确显示AM / PM?
我正在使用NPOI从Excel文件中读取并为我的应用程序提取一些有用的数据。在我解析日期时,我偶然发现了这个有趣的案例。
此格式为16:00:00 (4 o'clock in the afternoon)
的{{1}}日期在Excel中显示为[$-F400]h:mm:ss\ AM/PM
。
然而,类似的格式16:00:00
显示[$-409]h:mm:ss\ AM/PM;@
,我认为这是正确的,因为格式字符串末尾有04:00:00 PM
符号。
我的excel版本就是这个版本:AM/PM
我正在使用最新版本的NPOI(来自源代码),它将Microsoft® Office Excel® 2007 (12.0.6665.5003) SP3 MSO (12.0.6662.5000)
解释为[$-F400]h:mm:ss\ AM/PM
(与excel显示的方式不匹配)
我知道hh:mm:ss tt
是区域设置,我不知道[$-XXXX]
。
为什么,取决于环境,excel完全忽略了;@
部分?
编辑:看来AM/PM
似乎是@
的文本占位符。是否缺少此令牌强制excel显示24小时格式?
答案 0 :(得分:3)
正如@pnuts评论的那样,this link表示Excel使用特殊序列作为系统默认值。
"原因是,Excel使用(未记录的)转义序列 "系统默认"。这是[$ -F800]的日期,长系统默认值 时间为[$ -F400],系统默认为"。
NPOI 完全忽略了区域设置信息,因为它已作为参数传递给DataFormatter
。因此,它不是使用系统默认值,而是解析" AM / PM" 部分并显示 12小时格式,而不是 24小时系统默认
我已经通过更改库的源代码来解决我的问题,以适应我的需要。