swRTC

questo funziona:
comuqnue ad occhio hai solo sbagliato le dimensioni delle costanti

int swRTC::updateDate(){
  unsigned long time = getTimestamp();
/*  
  Serial.print( "timestamp: " );
  Serial.println( time );
*/
  unsigned long day = time/(60L*60L*24L);
  float remaining = time-day*(60L*60L*24L);
/*  
  Serial.println( remaining );
  
  Serial.print( "day: " );
  Serial.println( day );
*/  
  int year = (day / 365.2422);
  float dayRemaining = day-year*365.2422;
  year+=1900;
/*  
  Serial.print( "year: " );
  Serial.println( year );
  Serial.println( dayRemaining );
*/ 
  if (dayRemaining>=365.2422)
    return 1;//my math is wrong!
  
  if (year<1900)
    return 2;//year not supported!
/*  
  Serial.print( "dayRemaining: " );
  Serial.println( dayRemaining );
*/
  int month=0;
  while (dayRemaining > daysPerMonth[month]){
    dayRemaining -= daysPerMonth[month];
//    Serial.print( "added month: " );
//    Serial.println( dayRemaining );
    month++;
  }
  
  month++;//because month 0 doesn't exist
/*  
  Serial.print( "month: " );
  Serial.println( month );
*/  
  if (month>12)
    return 3;//my math is wrong!
  
//  Serial.println( dayRemaining );
  
  if (dayRemaining>=(60L*60L*24L))
    return 4;//my math is wrong!
/*
  Serial.print( "dayRemaining: " );
  Serial.println( dayRemaining );
*/
  day=dayRemaining;
  if (dayRemaining-day>0){ //add partial day!
    day++;
  }
  
  int hours = remaining/(60L*60L);
  remaining = remaining-hours*(60L*60L);
/*  
  Serial.println( remaining );
  
  Serial.print( "hours: " );
  Serial.println( hours );
*/
  if (remaining>=(60L*60L))
    return 5;//my math is wrong!
  
  int minutes = remaining/(60L);
  remaining = remaining-minutes*(60L);
/*
  Serial.print( "minutes: " );
  Serial.println( minutes );
  
  Serial.print( "seconds: " );
  Serial.println( remaining );
*/  
  if (remaining>=60)
    return 6;//my math is wrong!
    
  now.year = year;
  now.month = month;
  now.day = day;
  now.hour = hours;
  now.minute = minutes;
  now.second = remaining;  
  return 0;
}