2016-03-08 1 views
0

J'essaie de mettre à jour mon ancien code, mais j'ai quelques problèmes à mettre à jour Time.getJulianDay. J'ai essayé d'utiliser GregorianCalendar, mais je ne peux pas le transformer en int. Y a-t-il un moyen de le faire?Problèmes avec l'alternative à Time.julianDay

Ceci est mon code:

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))); 
} 

Merci

Répondre

0

Avez-vous envisagé d'utiliser la bibliothèque JodaTime dans votre application? Cela rendra le travail avec la date/heure sur Android beaucoup plus facile. Les fonctions d'aide àJulianDay() et àJulianDayNumber() seraient parfaites pour ce que vous essayez de faire. Ces méthodes retournent respectivement double et long et vous pouvez lancer ou convertir le résultat en un int si c'est absolument nécessaire (mais vous allez perdre de la précision).

La méthode toJulianDay (long) calcule le jour julien astronomique avec une fraction basée sur les jours commençant à midi. Cette méthode calcule la variante où les jours commencent à minuit. JDN 0 est utilisé pour la date équivalente au lundi 1er janvier 4713 BC (Julian). Ainsi, ces jours commencent 12 heures avant celles du jour fractionné de Julian.

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

+0

Cela fonctionne merci !! –