获取阳历、农历日期

相信在不少的app中都有显示当前日期的功能吧。以下的代码忘了从哪里找到的。先存着,日后可能会用到。
public class DateUtil {
    //  星期
    private static String[] week = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
    //  农历月份
    private static String[] lunarMonth = {"正月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "冬月", "腊月"};
    //  农历日
    private static String[] lunarDay = {"初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十",
            "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十",
            "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十"};

    /**
     * 获得当天time点时间戳
     */
    public static long getSignTime(int time) {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.HOUR_OF_DAY, time);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.MILLISECOND, 0);
        return (cal.getTimeInMillis() / 1000);
    }

    /**
     * 时间段格式化 hh:mm:ss 用来做倒计时
     */
    public static String timeFormat(long time) {
        int hours = (int) time / 3600;
        String hourStr;
        if (hours < 10) {
            hourStr = "0" + hours;

        } else {
            hourStr = hours + "";
        }
        int min = (int) (time - hours * 3600) / 60;
        String minStr;
        if (min < 10) {
            minStr = "0" + min;

        } else {
            minStr = min + "";
        }
        int second = (int) (time - (time / 60) * 60);
        String secondStr;
        if (second < 10) {
            secondStr = "0" + second;

        } else {
            secondStr = second + "";
        }
        String timeStr = (hourStr + ":" + minStr + ":" + secondStr);

        return timeStr;
    }

    /**
     * 获取年月日 格式yyyy-MM-dd
     */
    public static String getDate() {
        Date date = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String dateStr = simpleDateFormat.format(date);
        return dateStr;
    }

    /**
     * 获取年、月 格式 yyyy-MM
     *
     * @return
     */
    public static String getMonth() {
        Date date = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
        String month = simpleDateFormat.format(date);
        return month;
    }

    /**
     * 获取当月日期
     * @return Day of month
     */
    public static String getDay() {
        Calendar calendar = Calendar.getInstance();
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        return day+"";
    }

    /**
     * 获取星期几
     */
    public static String getWeek() {
        Calendar calendar = Calendar.getInstance();
        int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
        return week[dayOfWeek - 1];
    }

    /**
     * 获取农历月份
     * @return
     */
    public static String getLunarMonth() {
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1;
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        int[] lunarDate = LunarCalendar.solarToLunar(year, month, day);
        return lunarMonth[lunarDate[1] - 1];
    }

    /**
     * 获取农历日
     * @return
     */
    public static String getLunarDay() {
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1;
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        int[] lunarDate = LunarCalendar.solarToLunar(year, month, day);
        return lunarDay[lunarDate[2] - 1];
    }

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的C语言函数,可以用来获取指定日期农历日期: ```c #include <stdio.h> // 农历每个月的天数 int lunar_month_days[] = { 0x1F, 0x10, 0x01, 0x21, 0x12, 0x02, 0x22, 0x14, 0x04, 0x24, 0x16, 0x06 }; // 农历年份信息,包括闰月和每个月的天数 int lunar_year_info[] = { 0x04BD8, 0x04AE0, 0x0A570, 0x054D5, 0x0D260, 0x0D950, 0x16554, 0x056A0, 0x09AD0, 0x055D2, 0x04AE0, 0x0A5B6, 0x0A4D0, 0x0D250, 0x1D255, 0x0B540, 0x0D6A0, 0x0ADA2, 0x095B0, 0x14977, 0x04970, 0x0A4B0, 0x0B4B5, 0x06A50, 0x06D40, 0x1AB54, 0x02B60, 0x09570, 0x052F2, 0x04970, 0x06566, 0x0D4A0, 0x0EA50, 0x06E95, 0x05AD0, 0x02B60, 0x186E3, 0x092E0, 0x1C8D7, 0x0C950, 0x0D4A0, 0x1D8A6, 0x0B550, 0x056A0, 0x1A5B4, 0x025D0, 0x092D0, 0x0D2B2, 0x0A950, 0x0B557, 0x06CA0, 0x0B550, 0x15355, 0x04DA0, 0x0A5B0, 0x14573, 0x052B0, 0x0A9A8, 0x0E950, 0x06AA0, 0x0AEA6, 0x0AB50, 0x04B60, 0x0AAE4, 0x0A570, 0x05260, 0x0F263, 0x0D950, 0x05B57, 0x056A0, 0x096D0, 0x04DD5, 0x04AD0, 0x0A4D0, 0x0D4D4, 0x0D250, 0x0D558, 0x0B540, 0x0B5A0, 0x195A6, 0x095B0, 0x049B0, 0x0A974, 0x0A4B0, 0x0B27A, 0x06A50, 0x06D40, 0x0AF46, 0x0AB60, 0x09570, 0x04AF5, 0x04970, 0x064B0, 0x074A3, 0x0EA50, 0x06B58, 0x055C0, 0x0AB60, 0x096D5, 0x092E0, 0x0C960, 0x0D954, 0x0D4A0, 0x0DA50, 0x07552, 0x056A0, 0x0ABB7, 0x025D0, 0x092D0, 0x0CAB5, 0x0A950, 0x0B4A0, 0x0BA54, 0x0AD50, 0x055D9, 0x04BA0, 0x0A5B0, 0x15176, 0x052B0, 0x0A930, 0x07954, 0x06AA0, 0x0AD50, 0x05B52, 0x04B60, 0x0A6E6, 0x0A4E0, 0x0D260, 0x0EA65, 0x0D530, 0x05AA0, 0x076A3, 0x096D0, 0x04BD7, 0x04AD0, 0x0A4D0, 0x1D0B6, 0x0D250, 0x0D520, 0x0DD45, 0x0B5A0, 0x056D0, 0x055B2, 0x049B0, 0x0A577, 0x0A4B0, 0x0AA50, 0x1B255, 0x06D20, 0x0ADA0 }; // 获取农历年份 int get_lunar_year(int year, int month, int day) { int i, leap_month, is_leap, lunar_year; // 计算从1900年到当前年份之间的闰月数和是否有闰月 for (i = 1900, leap_month = 0; i < 2100 && month > 0; i++) { is_leap = lunar_year_info[i - 1900] & 0x10000; leap_month = is_leap ? (lunar_year_info[i - 1900] & 0xFF) : leap_month; month -= 12 - (is_leap ? 1 : 0); } // 计算当前是否为闰月 is_leap = (leap_month == month) && (month > 0); if (is_leap && day > lunar_month_days[month - 1]) { day -= lunar_month_days[month - 1]; if (month == leap_month + 1) { is_leap = 0; } } // 计算农历年份 lunar_year = i - 1900; if (month > 0) { lunar_year--; } return lunar_year; } // 获取农历月份 int get_lunar_month(int year, int month, int day) { int i, leap_month, is_leap, lunar_month; // 计算从1900年到当前年份之间的闰月数和是否有闰月 for (i = 1900, leap_month = 0; i < 2100 && month > 0; i++) { is_leap = lunar_year_info[i - 1900] & 0x10000; leap_month = is_leap ? (lunar_year_info[i - 1900] & 0xFF) : leap_month; month -= 12 - (is_leap ? 1 : 0); } // 计算当前是否为闰月 is_leap = (leap_month == month) && (month > 0); if (is_leap && day > lunar_month_days[month - 1]) { day -= lunar_month_days[month - 1]; if (month == leap_month + 1) { is_leap = 0; } } // 计算农历月份 if (is_leap) { lunar_month = -month; } else { for (i = 0; i < 12; i++) { if (day > lunar_month_days[i]) { day -= lunar_month_days[i]; } else { break; } } lunar_month = i + 1; } return lunar_month; } // 获取农历日期 int get_lunar_day(int year, int month, int day) { int i, leap_month, is_leap, lunar_day; // 计算从1900年到当前年份之间的闰月数和是否有闰月 for (i = 1900, leap_month = 0; i < 2100 && month > 0; i++) { is_leap = lunar_year_info[i - 1900] & 0x10000; leap_month = is_leap ? (lunar_year_info[i - 1900] & 0xFF) : leap_month; month -= 12 - (is_leap ? 1 : 0); } // 计算当前是否为闰月 is_leap = (leap_month == month) && (month > 0); if (is_leap && day > lunar_month_days[month - 1]) { day -= lunar_month_days[month - 1]; if (month == leap_month + 1) { is_leap = 0; } } // 计算农历日期 if (is_leap) { lunar_day = day; } else { for (i = 0; i < 12; i++) { if (day > lunar_month_days[i]) { day -= lunar_month_days[i]; } else { break; } } lunar_day = day; } return lunar_day; } int main() { int year = 2022, month = 10, day = 1; int lunar_year, lunar_month, lunar_day; lunar_year = get_lunar_year(year, month, day); lunar_month = get_lunar_month(year, month, day); lunar_day = get_lunar_day(year, month, day); printf("阳历日期:%d年%d月%d日\n", year, month, day); printf("农历日期:%d年", lunar_year); if (lunar_month < 0) { printf("闰%d月", -lunar_month); } else { printf("%d月", lunar_month); } printf("%d日\n", lunar_day); return 0; } ``` 该函数假定1900年为农历1年1月1日,输入阳历日期,输出对应的农历日期。输出结果类似于“2022年闰八月十一日”的形式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值