比利时本地化Excel 365日期时间格式识别异常及文本转日期函数需求问询
比利时本地化Excel 365日期时间格式识别异常及文本转日期函数需求问询
嗨Dominique,针对你遇到的Excel比利时本地化日期时间问题,我分两部分给你解答:
一、自定义格式不显示时间的排查与解决
你提到单元格E2用了格式[$-x-sysdate]dddd, mmmm dd, jjjj u:mm:ss却看不到时间,而E3用u:mm:ss能正常显示,大概率是这两个原因:
- 区域标记与格式代码不兼容:
[$-x-sysdate]是调用系统默认区域的格式规则,但和你用的比利时荷兰语专属格式代码(j代年份、u代小时)匹配度不高。建议换成比利时荷兰语的特定区域代码[$-0813],同时调整格式为dddd, dd mmmm jjjj u:mm:ss(去掉日期部分多余的逗号,避免解析冲突)。 - 单元格值并非完整日期时间:你用
Ctrl;插入的是纯日期值,之后手动输入的时间字符串如果没和日期合并成一个完整的日期时间值(正确操作应该是Ctrl;+空格+Ctrl:插入带时间的日期),单元格本质还是纯日期,就算格式包含时间部分也不会显示。可以选中E2看编辑栏,如果只有日期没有时间,说明值本身缺时间部分,你可以用公式=E2+"12:34:56"生成完整的日期时间值后再设置格式。
二、文本转日期时间的实现方案
Excel没有原生的DateFromText()函数,但在Excel 365里可以用文本拆分函数组合实现,针对你给出的比利时语日期格式(dinsdag 5 december 2023 11:55:55),推荐两种方案:
方案1:精准拆分组合(兼容性更强)
用LET函数简化逻辑,拆分文本各部分后重组为日期时间值:
=LET( raw_text, A1, // 拆分日期部分和时间部分 date_segment, TEXTBEFORE(raw_text, " ", -2), time_segment, TEXTAFTER(raw_text, " ", -1), // 从日期部分拆分日、月名称、年 day_val, TEXTBEFORE(date_segment, " ", -2), month_name, TEXTAFTER(date_segment, " ", -2), year_val, TEXTAFTER(date_segment, " ", -1), // 将荷兰语月份名称转换为数字 month_val, MATCH(month_name, {"januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"}, 0), // 组合成Excel可识别的日期时间值 DATE(year_val, month_val, day_val) + TIMEVALUE(time_segment) )
方案2:简化转换(依赖系统区域设置)
如果你的系统区域已经设置为比利时荷兰语,可以直接去掉文本中的星期前缀,用VALUE函数转换:
=VALUE(SUBSTITUTE(A1, LEFT(A1, FIND(" ", A1)), ""))
这个公式会删掉开头的dinsdag ,剩下的5 december 2023 11:55:55符合系统区域的日期格式,VALUE就能直接转换成日期时间值。
备注:内容来源于stack exchange,提问作者Dominique




