显示的农历月份比实际少一个月
==============

#### 问题现象

显示农历日期，日数是对的，但月份比实际少一个月，如2025年7月9日对应的农历日期应为6月15日，但显示为5月15日。

#### 背景知识

*   [i18n.getCalendar](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-i18n#i18ngetcalendar8)：获取指定区域和历法的日历对象。
    *   i18n.getCalendar('zh-Hans', 'chinese')：获取中国农历历法日历对象。
*   [Calendar](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-i18n#calendar8)：日历对象。
    *   [setTime](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-i18n#settime8)：设置日历对象内部的时间、日期。
    *   [get('month')](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-i18n#get8)：获取日历对象中月份的值。注意月份从0开始计数，例如0表示一月。

#### 问题定位

1.  检查代码中获取的日历对象是否是中国农历历法，即[i18n.getCalendar](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-i18n#i18ngetcalendar8)的第二个参数（type）是否为字符串'chinese'。
2.  [get('month')](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-i18n#get8)获取的月份是从0开始计数，排查代码中是否在获取月份时对数值做了+1处理，错误代码如下所示：
    
    import { i18n } from '@kit.LocalizationKit';
    
    _// 获取中国农历历法_
    let calendar: i18n.Calendar = i18n.getCalendar('zh-Hans', 'chinese');
    // _显示的月份数=calendar.get('month')将导致比实际月份数少1_
    let month: number = calendar.get('month');
    

#### 分析结论

因问题现象为日数正确、月份数比实际月份少1个月，所以可能的问题原因为显示农历月份时，直接显示了[calendar.get('month')](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-i18n#get8)获取到的月份数，没有在此基础上+1。

#### 修改建议

显示月份时，在[calendar.get('month')](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-i18n#get8)获取到的月份数上+1，得到实际的月份。

import { i18n } from '@kit.LocalizationKit';

// _获取中国农历历法_
let calendar: i18n.Calendar = i18n.getCalendar('zh-Hans', 'chinese');
// _显示的月份数=calendar.get('month')+1_
let month: number = calendar.get('month') + 1;