在Android中使用公历获取当前的儒略日编号

问题描述 投票:2回答:1

android.text.format.Time具有称为getJulianDay的方法,该方法返回自纪元以来的日期。但是文档说:

该类在API级别22中已弃用。使用GregorianCalendar代替。

GregorianCalendar中是否有任何方法可以完成相同的工作?

java android time calendar gregorian-calendar
1个回答
3
投票

AFIK没有,但是也许可以帮忙,小数部分将被忽略。

public static int getJulianDay(Calendar cal) {
    int year = cal.get(Calendar.YEAR);
    int month = cal.get(Calendar.MONTH)+1; //Note January returns 0
    int date = cal.get(Calendar.DATE);
    return (1461 * (year + 4800 + (month - 14) / 12)) / 4 
            + (367 * (month - 2 - 12 * ((month - 14) / 12))) / 12
            - (3 * ((year + 4900 + (month - 14) / 12) / 100)) / 4 + date - 32075;
}

计算公式来自https://en.wikipedia.org/wiki/Julian_day,请参见“ 将公历日期转换为儒略日编号

© www.soinside.com 2019 - 2024. All rights reserved.