Unix Timestamp转CET时区Excel公式报错(显示########)问题求助
解决Unix纳秒时间戳转CET/CEST时间的问题
我来帮你排查问题!首先看你提供的时间戳1629294665262271969,这可不是毫秒级的——它是纳秒级的(19位数字),这才是导致公式报错的核心原因!
问题分析
你之前尝试除以1000,但得到的数值还是远超出Excel能处理的日期范围:Excel的日期序列最大对应9999年12月31日,数值约为2958465。而你除以1000后的数值1629294665262271.969再除以86400,结果是18857577144,这显然远远超过了上限,所以会显示#############################。
正确的转换步骤
1. 先把纳秒时间戳转成UTC时间
用这个适配德国区域分号分隔的公式:
=(A1/86400000000000)+DATE(1970;1;1)
解释一下:
- 1天=86400秒,1秒=10亿纳秒,所以总转换系数是
86400*1000000000=86400000000000 DATE(1970;1;1)是Unix时间戳的起始基准日期
用你的时间戳代入,会得到UTC时间:2021-08-18 12:51:05
2. 转换为CET/CEST(中欧时间)
中欧时间分冬令时(CET,UTC+1)和夏令时(CEST,UTC+2),2021年8月属于夏令时,所以直接在UTC时间基础上加2小时即可:
=(A1/86400000000000)+DATE(1970;1;1)+(2/24)
如果需要自动识别夏令时(适配所有日期),如果你使用的是Excel 365版本,推荐用CONVERT_TZ函数,它会自动根据日期切换时区偏移:
=CONVERT_TZ((A1/86400000000000)+DATE(1970;1;1);"UTC";"Europe/Berlin")
这个公式会直接输出你想要的结果:2021-08-18 14:51:05
验证结果
你的目标时间Wed Aug 18 2021 14:51:05正好是UTC时间加2小时的夏令时结果,和上述计算完全匹配。
内容的提问来源于stack exchange,提问作者hagay isaak
相关产品推荐
相关产品推荐

