1/** 2 * Copyright (c) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16import i18n from '@ohos.i18n'; 17 18const YEAR_CONVERT: number = 2697; 19const YEAR_CYCLE: number = 60; 20const LUNAR_MONTH = ['正', '二', '三', '四', '五', '六', '七', '八', '九', '十', '冬', '腊']; 21const LUNAR_DAY = ['初一', '初二', '初三', '初四', '初五', '初六', '初七', '初八', '初九', '初十', '十一', '十二', '十三', '十四', 22'十五', '十六', '十七', '十八', '十九', '廿十', '廿一', '廿二', '廿三', '廿四', '廿五', '廿六', '廿七', '廿八', '廿九', '三十', 23'三一']; 24const NUM_CHAR = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']; 25 26class CalendarUtil { 27 //公历转农历 28 getLunarDate(date: Date) { 29 let calendar = i18n.getCalendar('zh-CN', 'chinese'); 30 calendar.setTime(date); 31 const lunarMonth = calendar.get('month'); 32 const lunarDay = calendar.get('date'); 33 let lunarYear = calendar.get('era') * YEAR_CYCLE + calendar.get('year') - YEAR_CONVERT; 34 return { 35 year: lunarYear, 36 month: lunarMonth, 37 day: lunarDay 38 } 39 } 40 41 formatLunarDate(lunar: any) { 42 if (!lunar) { 43 return ''; 44 } 45 let result: string = ''; 46 if (lunar.year) { 47 result += `${lunar.year}年` 48 } 49 if (lunar.month != undefined) { 50 result += `${LUNAR_MONTH[lunar.month]}月` 51 } 52 if (lunar.day) { 53 result += ` ${LUNAR_DAY[lunar.day - 1]}` 54 } 55 return result; 56 } 57} 58 59export default new CalendarUtil(); 60 61 62 63 64