You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala读取YAML文件时日期值总减少1天的原因是什么?

问题原因分析
  • 时区偏移导致日期差:YAML解析器默认会将YYYY-MM-DD格式的内容自动识别为UTC时区的日期对象,解析时默认取UTC当天的0点。你输出时使用的是EST时区(美国东部标准时间,属于UTC-5时区),UTC时间的2020-02-25 00:00:00减去5小时,对应EST时间就是2020-02-24 19:00:00,因此会出现日期少1天的现象。
  • 无效日期自动修正:你输入的2020-02-30属于无效日期,YAML的日期解析逻辑会自动将其修正为当月最后一天(2020年为闰年,2月最后一天为29日),因此解析为UTC时间的2020-02-29 00:00:00,转换为EST时间后就是你看到的Sat Feb 29 19:00:00 EST 2020。
解决方案
  • 强制日期按字符串解析:在YAML文件中给日期值加英文引号,写成date: "2020-02-25",解析器就不会自动做日期类型转换,你可以拿到原始字符串后自行按照目标时区做日期转换。
  • 调整YAML解析器配置:修改你所用的YAML库的配置,要么禁用自动日期类型推断功能,要么将解析默认时区设置为你需要的EST时区,保证解析和输出的时区一致。
  • 输出时统一时区格式:拿到解析后的日期对象后,不要直接调用默认toString方法打印,而是指定EST时区做格式化输出,避免默认时区带来的偏移。

内容的提问来源于stack exchange,提问作者Glarixon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:39:05