Beispiel #1
0
void __tmValidate(
    struct tm *pTime
    )
{
    struct tm t;
    int       jday;
    int       mon;

    /* Set local structure */
    t = *pTime;

    /* Normalize */
    __tmNormalize(&t.tm_min, &t.tm_sec, SECSPERMIN);
    __tmNormalize(&t.tm_hour, &t.tm_min, MINSPERHOUR);
    __tmNormalize(&t.tm_mday, &t.tm_hour, HOURSPERDAY);
    __tmNormalize(&t.tm_year, &t.tm_mon, MONSPERYEAR);

    /* Calulcate julian day */
    jday = __julday(t.tm_year, t.tm_mon, t.tm_mday);

    /* Calulcate month and day */
    for (mon = 0;
         (jday > __julday(t.tm_year, mon + 1, 0)) && (mon < 11);
         mon++);

    t.tm_mon = mon;
    t.tm_mday = jday - __julday(t.tm_year, mon, 0);
    t.tm_wday = 0;
    t.tm_yday = 0;

    *pTime = t;
}
Beispiel #2
0
/*******************************************************************************
*
* __tmValidate - validate the broken-down structure, tmptr.
*
* RETURNS: the validated structure.
* NOMANUAL
*/
LOCAL void __tmValidate
    (
    struct tm * tmptr	/* pointer to broken-down structure */
    )
    {
    struct tm tmStruct;
    int       jday;
    int       mon;

    /* Adjust timeptr to reflect a legal time
     * Is it within range 1970-2038?
     */
		   
    tmStruct = *tmptr;

    __tmNormalize (&tmStruct.tm_min, &tmStruct.tm_sec, SECSPERMIN);
    __tmNormalize (&tmStruct.tm_hour, &tmStruct.tm_min, MINSPERHOUR);
    __tmNormalize (&tmStruct.tm_mday, &tmStruct.tm_hour, HOURSPERDAY);
    __tmNormalize (&tmStruct.tm_year, &tmStruct.tm_mon, MONSPERYEAR);

    /* tm_mday may not be in the correct range - check */

    jday = __julday (tmStruct.tm_year, tmStruct.tm_mon , tmStruct.tm_mday);

    if (jday < 0) 
    	{
    	tmStruct.tm_year--;
    	jday += DAYSPERYEAR;
    	}

    /* Calulate month and day */
    for (mon = 0; 
         (jday > __julday (tmStruct.tm_year, mon+1, 0)) && (mon < 11); 
         mon++ )
	;

    tmStruct.tm_mon  = mon;
    tmStruct.tm_mday = jday - __julday (tmStruct.tm_year, mon, 0);
    tmStruct.tm_wday = 0;
    tmStruct.tm_yday = 0;

    *tmptr = tmStruct;
    }