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

Java中不依赖新库将Calendar实例转换为DateTime实例的方法

解决Calendar转Joda DateTime(无额外依赖)的问题

嘿,我来帮你搞定这个转换问题!既然你已经在使用Joda-Time的DateTime和IslamicChronology,那其实完全不需要引入任何新库——Joda本身就支持直接从Calendar实例转换到DateTime。

具体实现步骤

  1. 直接用Joda的DateTime构造器转换
    Joda-Time的DateTime类提供了接受Calendar参数的构造方法,能直接提取Calendar中的时间、时区等信息,生成对应的DateTime实例:

    // 假设你的Calendar实例是calendarObj
    DateTime dateTimeFromCalendar = new DateTime(calendarObj);
    
  2. 应用阿拉伯历 Chronology
    拿到DateTime实例后,就可以直接复用你现有的代码来获取阿拉伯历月份了:

    DateTime islamicDateTime = dateTimeFromCalendar.withChronology(
        IslamicChronology.getInstance(tzSAUDI_ARABIA, IslamicChronology.LEAP_YEAR_15_BASED)
    );
    int arabicMonth = islamicDateTime.getMonthOfYear();
    

为什么这个方案可行?

Joda-Time设计时就考虑了和Java原生日期类的兼容,DateTime(Calendar)构造器是库内建的功能,不需要额外引入任何依赖包——你已经在项目里用了Joda的类,所以这个转换完全是“零新增依赖”的。

可能你之前搜索没找到,是因为关键词没精准匹配,比如试试搜“Joda DateTime from Java Calendar”就能找到官方的相关说明啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:43:35