Esempio n. 1
0
static long ymd_to_scalar (unsigned yr, unsigned mo, unsigned day) {
  long scalar;

  scalar = day + months_to_days(mo);
  if (mo > 2) /* adjust if past February */
    scalar -= isleap(yr) ? 1 : 2;
  yr--;
  scalar += years_to_days(yr);
  return scalar;
}
Esempio n. 2
0
int jdate( unsigned yr, unsigned mo, unsigned day )
{
	SEH_PUSH("jdate()");
	int which = day + months_to_days( mo );
	if ( mo > 2 )
	{
		which -= isleap( yr ) ? 1 : 2;
	}
	
	return which;
}
Esempio n. 3
0
/*--------------------------------------------------------------------------*/
static long ymd_to_scalar (unsigned year, unsigned month, unsigned day)
{
    long scalaire;
    scalaire = day + months_to_days(month);
    if ( month > 2 )
    {
        scalaire -= isBissextile(year) ? 1 : 2;
    }
    year--;
    scalaire += years_to_days(year);
    return scalaire;
}
Esempio n. 4
0
void scalar_to_ymd (long scalar, unsigned *yr, unsigned *mo, unsigned *day)
{
   static unsigned n;                /* compute inverse of years_to_days() */

   for ( n = (unsigned)((scalar * 400L) / 146097L); years_to_days(n) < scalar;)
      n++;                          /* 146097 == years_to_days(400) */
   *yr = n;
   n = (unsigned)(scalar - years_to_days(n-1));
   if ( n > 59 ) {                       /* adjust if past February */
      n += 2;
      if ( isleap(*yr) )
         n -= n > 62 ? 1 : 2;
   }
   *mo = (n * 100 + 3007) / 3057;    /* inverse of months_to_days() */
   *day = n - months_to_days(*mo);
}
Esempio n. 5
0
static void scalar_to_ymd (long scalar,
                           unsigned *pyr,
                           unsigned *pmo,
                           unsigned *pday) {
  unsigned n; // compute inverse of years_to_days()

  n = (unsigned)((scalar * 400L) / 146097L);
  while ((long)years_to_days(n) < scalar) {
    n++;
  }
  for ( n = (unsigned)((scalar * 400L) / 146097L); (long)years_to_days(n) < scalar; )
    n++; // 146097 == years_to_days(400)
  *pyr = n;
  n = (unsigned)(scalar - years_to_days(n-1));
  if ( n > 59 ) { // adjust if past February
    n += 2;
    if ( isleap(*pyr) )
      n -= n > 61 ? 1 : 2;
  }
  *pmo = (n * 100 + 3007) / 3057; // inverse of months_to_days()
  *pday = n - months_to_days(*pmo);
  return;
}