Excel/EPPlus 数字格式是否与 DateTimeFormat.ShortDatePattern 兼容?

Is Excel/EPPlus number format compatible with DateTimeFormat.ShortDatePattern?

我正在 ASP.Net 中使用 EPPlus 创建一些 Excel 文件。一切正常,除了在某些情况下,我需要显示一个短日期格式。使用 EPPlus NumberFormat,我可以应用短日期格式:

ws.Column(1).Style.Numberformat.Format = "yyyy-MM-dd";

在我的电子表格中将日期输出为 2015-07-21。虽然这是通用的,但如果可能的话,我更喜欢本地化(基于用户区域设置)的格式。我可以用这个检索用户语言环境的短日期格式:

String s = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;

对于身在英国的我来说,这个 returns dd/MM/yyyy。使用 EPPlus 的其他作者参考 Open Office XML ECMA-376 spec (50MB) 以应用数字格式。第 1768 页显示:

但是这里的m都是小写的,在.Net中不是月而是分钟,所以wrong/non-compatible如果我这样做呢?

ws.Column(1).Style.Numberformat.Format = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;

我没有资源来测试每种文化的日期格式,所以我想知道我的方法是否有问题?

或者,我是否应该按照规范转换 ShortDatePattern ToLower 以忽略大写字母 MM? Excel (2013) 本身对自定义日期格式使用小写,所以我认为小写方法更好?我已经对两种格式进行了测试(使用 upper/lower 案例 mm),结果是一样的,但跨文化的事情让我担心。

我已经花了两天时间对此进行测试。似乎不应该使用 DateTimeFormat.ShortDatePattern 。相反,无论客户端浏览器上的 locale/language 设置如何,对短日期使用此方法 (ISO8601)。

ws.Column(1).Style.Numberformat.Format = "yyyy-MM-dd"

这是因为不能保证浏览器与计算机的区域设置相匹配(Firefox 和 Chrome 可以很容易地修改,并且 Chrome 默认安装为 en-US),并且 Excel 使用计算机的区域设置。

MS Excel 足够聪明,可以读取日期值并根据 Windows 语言设置将它们转换为正确的格式。因此,就我而言,如果我的 Windows 语言是英国英语,我会自动在 Excel 中看到 en-GB 格式的日期。

如果我随后关闭电子表格,将 Windows 切换为挪威语,重新登录并重新打开同一个电子表格,日期将自动以相应的挪威语格式显示。