我的公司构建报告工具,其中一种导出格式是 excel。由于我们的客户来自不同的国家,当我们生成 excel 文件时,我们使用区域设置格式来使用以下格式化程序显示日期:
[$-<locale here>]mmmm d, yyyy;@
因此,如果单元格的日期为 2020 年 3 月 31 日,并且语言环境设置为爱尔兰,它将显示为 2020 年 3 月 10 日,但如果语言环境设置为西班牙,它将显示 Marzo 10, 2020
我们收到了一份客户报告,称这对他们不起作用,因为他们的 2020 年 3 月 31 日日期显示为 2020 年 3 月 8 日
经过仔细检查,我注意到他们的格式化程序被列为:
[$-,F]mmmm d, yyyy;@
我试图找到 Excel 试图在那里解析的实际内容,或者试图使用什么日历或日期格式化程序来显示该虚假日期无效。我们显然需要在识别客户的语言环境方面做得更好,但我想知道这是否可能是由于客户的计算机中有一个奇怪的语言环境,或者只是一些虚假代码。
这发生在 Excel 2013 中,但我也能够在 Excel 365 上重现它。我还尝试找到与 F 的十六进制值相关的任何国家/地区代码,但没有任何效果。删除 后,格式化程序将,
F 标识为法国的代码,并以法语显示正确的日期编号:mars 30, 2020。
据我所知
[$-,F]
,这相当于[$-F0000]
将日期转换为农历。我想看看所有其他字母在相同情况下代表什么,所以我写了这个:
您可以在任何空工作簿中使用它。它将使用罗马字母表中的每个字母作为格式代码显示当前日期,该格式代码类似于您帖子中的 [$-,F]。我敢肯定还有更多,但是这些足够有启发性,可以进行一些挖掘。
例如
我还从@DavidPostill 在他的评论中包含的链接中获取了语言代码列表(我认为还有其他更完整的国家代码列表也可以使用)。
我将上面评论中链接中的代码表放入 Sheet2 并将其写入使用上面第一个函数创建的表的底部,只是出于兴趣。
据我所知,有语言代码(后一个列表/函数)和日历代码(前一个函数)。
我认为您正在寻找语言代码。
但是您可能会在简单地使用 时获得更多成功
[$-x-sysdate]
,这是当我从“格式单元格”对话框中“日期”下的列表中选择所需格式然后在“自定义”列表中查看相同格式时显示的代码。