Time.julianDay 的替代问题

Problems with alternative to Time.julianDay

我正在尝试更新我的旧代码,但我在更新 Time.getJulianDay 时遇到了一些问题。我曾尝试使用 GregorianCalendar,但无法将其转换为 int。 ¿有什么办法吗?

这是我的代码:

public void addDate(ExtendedCalendarView calendarView,String eventname,String description, String location)
{
    try {
        if(startYear==-1)
            throw new Exception("No has indicado los valores de las horas");

        cal.set(startYear, startMonth - 1, startDay, startHour, startMinute);
        long time = cal.getTimeInMillis();

        ContentValues values = new ContentValues();
        values.put(CalendarProvider.COLOR, Event.COLOR_RED);
        values.put(CalendarProvider.DESCRIPTION, description);
        values.put(CalendarProvider.LOCATION, location);
        values.put(CalendarProvider.EVENT, eventname);
        values.put(CalendarProvider.START, time);
        values.put(CalendarProvider.START_DAY, getJulianDay(time));

        cal.set(stopYear, stopMonth - 1, stopDay, stopHour, stopMinute);
        time = cal.getTimeInMillis();
        values.put(CalendarProvider.END, time);
        values.put(CalendarProvider.END_DAY, getJulianDay(time));

        context.getContentResolver().insert(CalendarProvider.CONTENT_URI, values);

        restartTime();
        calendarView.refreshCalendar();

    }
    catch (Exception ex)
    {
        Log.d("asd", "ERROR;"+ex.getMessage());
    }

}

private int getJulianDay(long time)
{
    GregorianCalendar date=(GregorianCalendar) GregorianCalendar.getInstance(TimeZone.getTimeZone("UTC"));
    date.setTime(new Date(time));
    date.set(Calendar.HOUR_OF_DAY, 0);
    date.set(Calendar.MINUTE,0);
    date.set(Calendar.SECOND, 0);
    date.set(Calendar.MILLISECOND,0);


    //return Time.getJulianDay(time, TimeUnit.MILLISECONDS.toSeconds(timeZone.getOffset(time)));
}

谢谢

您是否考虑过在您的应用中使用 JodaTime 库?这将使在 Android 上使用 date/time 变得更加容易。辅助函数 toJulianDay() 和 toJulianDayNumber() 非常适合您要执行的操作。这些方法分别 return double 和 long,如果绝对需要,您可以将结果强制转换或转换为 int(但您将失去一些精度)。

The toJulianDay(long) method calculates the astronomical Julian Day with a fraction based on days starting at midday. This method calculates the variant where days start at midnight. JDN 0 is used for the date equivalent to Monday January 1, 4713 BC (Julian). Thus these days start 12 hours before those of the fractional Julian Day.

Here is the full documentation for more details. and a link to the JodaTime project.