为什么这种格式" [$ - F400] h:mm:ss \ AM / PM" Excel中的24小时格式?

时间:2014-10-14 13:13:13

标签: excel date-formatting npoi

然而这一个[$-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小时格式?

1 个答案:

答案 0 :(得分:3)

正如@pnuts评论的那样,this link表示Excel使用特殊序列作为系统默认值。

  

"原因是,Excel使用(未记录的)转义序列   "系统默认"。这是[$ -F800]的日期,长系统默认值   时间为[$ -F400],系统默认为"。

NPOI 完全忽略了区域设置信息,因为它已作为参数传递给DataFormatter。因此,它不是使用系统默认值,而是解析" AM / PM" 部分并显示 12小时格式,而不是 24小时系统默认

我已经通过更改库的源代码来解决我的问题,以适应我的需要。