コード例 #1
0
ファイル: hebrew_conv.cpp プロジェクト: FenLys/C_and_CPP
	jd_t hebrew_to_jd(year_t year, month_t month, day_t day, hour_t hour, minute_t minute, second_t second) {

		jd_t ymd = HEBREW_EPOCH + delay_of_week(year) + delay_adjacent_year(year) + day + 1;
		
		if (month < 7) {
			for (month_t m = 7; m <= hebrew_months_in_year(year); ++m)
				ymd += hebrew_days_in_month(year, m);
			for (month_t m = 1; m <= month - 1; ++m)
				ymd += hebrew_days_in_month(year, m);
		}
		else {
			for (month_t m = 7; m <= month - 1; ++m)
				ymd += hebrew_days_in_month(year, m);
		}

		jd_t hms = tod(hour, minute, second);
		if (hms >= 0.5) --hms;
		return ymd + hms; 
	}
コード例 #2
0
/* Given an absolute date, calculate the Hebrew date */
void Converter::hebrew_from_absolute( long date, int *yearp, int *monthp,
                                      int *dayp )
{
  int year, month, day, gyear, gmonth, gday, months;

  gregorian_from_absolute( date, &gyear, &gmonth, &gday );
  year = gyear + 3760;
  while ( date >= absolute_from_hebrew( 1 + year, 7, 1 ) ) {
    year++;
  }
  months = hebrew_months_in_year( year );
  for ( month = 7;
        date > absolute_from_hebrew( year, month,
                                     hebrew_month_length( year, month ) );
        month = 1 + ( month % months ) ) {}
  day = 1 + date - absolute_from_hebrew( year, month, 1 );
  *yearp = year;
  *monthp = month;
  *dayp = day;
}
コード例 #3
0
/* Given a Hebrew date, calculate the number of days since January 0, 0001,
   Gregorian */
long Converter::absolute_from_hebrew( int year, int month, int day )
{
  long sum = day + hebrew_elapsed_days( year ) - 1373429L;
  int i;

  if ( month < 7 ) {
    int months = hebrew_months_in_year( year );
    for ( i = 7; i <= months; ++i ) {
      sum += hebrew_month_length( year, i );
    }
    for ( i = 1; i < month; ++i ) {
      sum += hebrew_month_length( year, i );
    }
  } else {
    for ( i = 7; i < month; ++i ) {
      sum += hebrew_month_length( year, i );
    }
  }
  return sum;
}