Beispiel #1
0
JD
ymd2jd(YMD ymd)
{
    JD jd;
    int m, y;

    y = ymdGetYear(ymd);
    m = ymdGetMonth(ymd);

    /* normalize the month */
    if (m < 1) {
        y -= (1 - m) / 12;
        m = (m % 12) + 12;
    }

    if (m > 12) {
        y += (m - 1) / 12;
        m = ((m - 1) % 12) + 1;
    }

    jdSetDay(jd, gcal2j(y, m, 0));
    jdIncDay(jd, ymdGetDay(ymd));

    /* now the fractional day...  */
    jd.hms = ymd.hms;

    /* julian days start 12 hours after civil days */
    jdDecHours(jd, 12.0);

    return(jd);
}
Beispiel #2
0
char *
fmt_ymd(YMD ymd)
{
    char *p;
    double j;	/* julian day number of target time */
    int fpart;
    int ipart;
    int today;

    /* get a buffer */
    p = ymdbuf[nxtymdbuf++];
    nxtymdbuf %= NYMDBUF;

    /* normalize the time */
    ymd = ymd2ymd(ymd);

    /* get the julian day number */
    j = ymd2j(ymd);

    /* get the day of the week */
    today = j2dow(j);

    ipart = (int)ymdGetSeconds(ymd);
    fpart = 1e3 * (ymdGetSeconds(ymd) - ipart);

    (void)sprintf(p, "%3.3s %3.3s %2d %02d:%02d:%02d.%03d %4d",
	    dow[today],
	    moy[ymdGetMonth(ymd)-1],
	    (int)ymdGetDay(ymd),
	    (int)ymdGetHours(ymd),
	    (int)ymdGetMinutes(ymd),
	    ipart, fpart,
	    ((ymdGetYear(ymd) > 0) ? ymdGetYear(ymd) : (1-ymdGetYear(ymd))));

    if (ymdGetYear(ymd) <= 0) {
	(void)strcat(p, " BC");
    }

    return(p);
}
Beispiel #3
0
int main(){
  YMD ymd;
  #define L 4
  double y[L][2] = {
    {1858.0, 321.0},
    {1949.0, 365.9234590},
    {2000.0, 1.5},
    {1984.0, 1.0}
  };

  for(int i=0; i < L; i++){

    printf("%4d %12.7f\n", (int)y[i][0], y[i][1]);
    ymd = ydd2ymd((int)y[i][0], y[i][1]);

    printf("%4d %2d %10.6f %10.6f %10.6f %10.6f\n", ymdGetYear(ymd),
           ymdGetMonth(ymd), ymdGetDay(ymd), ymdGetHours(ymd),
           ymdGetMinutes(ymd), ymdGetSeconds(ymd));
    
  }

  return 0;

}
Beispiel #4
0
int main(){
  YMD ymd;
  double t = 0.0;
  #define L 9
  double y[L][6] = {
    {1858.0, 11.0, 17.0, 0.0, 0.0, 0.0},
    {1949.0, 12.0, 31.923459, 0.0, 0.0, 0.0},
    {2000.0, 1.0, 1.0, 0.0, 0.0, 0.0},
    {1984.0, 1.0, 1.0, 0.0, 0.0, 0.0},
    {1984.0, 1.0, 0.0, 0.0, 0.0, 0.0},
    {1984.0, 12.0, 31.0, 23.0, 59.0, 60.0},
    {1985.0, 1.0, 1.0, 0.0, 0.0, 0.0},
    {1985.0, 1.0, 0.0, 0.0, 0.0, 0.0},
    {1985.0, 12.0, 31.0, 23.0, 59.0, 60.0}
  };

  for(int i=0; i < L; i++){
    ymdSetYear(ymd, (int)y[i][0]);
    ymdSetMonth(ymd, (int)y[i][1]);
    ymdSetDay(ymd, y[i][2]);
    ymdSetHours(ymd, y[i][3]);
    ymdSetMinutes(ymd, y[i][4]);
    ymdSetSeconds(ymd, y[i][5]);

    printf("%4d %2d %10.6f %10.6f %10.6f %10.6f\n", ymdGetYear(ymd),
           ymdGetMonth(ymd), ymdGetDay(ymd), ymdGetHours(ymd),
           ymdGetMinutes(ymd), ymdGetSeconds(ymd));
    
    t = ymd2y(ymd);

    printf("%13.8f\n\n", t);
  }

  return 0;

}