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

如何将Joda Time生成的日期范围转换为yyyy-MM-dd格式?

解决Joda Time日期格式化的问题

嗨,我来帮你搞定这个问题~你遇到的错误核心是搞反了「格式化」和「解析」的方法:

你现在用的dtf.parseDateTime(d.toString)是把字符串解析成DateTime对象,但你实际需要的是把已有的DateTime对象转换成指定格式的字符串,这时候应该用format方法而不是parseDateTime。

正确的实现代码

import org.joda.time.DateTime
import org.joda.time.format.DateTimeFormat

// 获取当前时间
val now = DateTime.now()
// 定义日期格式化器
val dtf = DateTimeFormat.forPattern("yyyy-MM-dd")
// 生成日期范围并格式化输出
(0 until 5).map(now.minusDays(_)).foreach(date => println(dtf.format(date)))

代码解释

  • DateTimeFormat.forPattern("yyyy-MM-dd"):创建符合你需求的格式化规则
  • dtf.format(date):将DateTime对象按照指定格式转换成yyyy-MM-dd格式的字符串,这才是你需要的操作
  • 如果想直接生成格式化后的字符串列表,也可以简化写法:
    val formattedDates = (0 until 5).map(n => dtf.format(now.minusDays(n)))
    formattedDates.foreach(println)
    

之前的错误是因为你把DateTime对象转成默认字符串后,用parseDateTime去解析它,但默认的DateTime字符串格式和yyyy-MM-dd不匹配,所以触发了Invalid format异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:19:31