Re: using perl to print yesterday's date, but with formatting options ?



Purl Gurl wrote:
Mothra wrote:
usenet wrote:
Purl Gurl wrote:

(snipped)

You can get it right most of the time, but not all the time.

http://www.google.com/search?hl=en&q=tm_isdst+problem&btnG=Google+Search

Purl Gurl

From Microsoft:

// ----------------- start of sample program -------------------------

// Compiler switches needed : none.

#include <time.h>;
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>

int main ()
{
    struct tm ltm;
    time_t tstamp = 0;

    ltm.tm_year = 90;	/* First valid year .*/
    ltm.tm_mon = 3;		/* April. */
    ltm.tm_mday = 1;	/* 1st of the month. */
    ltm.tm_hour = 3;	/* At 3:00 am. */
    ltm.tm_min = 0;
    ltm.tm_sec = 0;
    ltm.tm_wday =0;
    ltm.tm_yday = 0;

    while (ltm.tm_year <= 2005)
    {
        ltm.tm_isdst = -1;

	// mktime indirectly calls cvtdate which has the logic bug.
	tstamp = mktime(&ltm);

	/* If it's Sunday April 1st, it should also be DST */
	if (!ltm.tm_wday && !ltm.tm_isdst)
	{
	    printf("April 01 is the first Sunday in April, %d  \
            -it should be DST but tm_isdst says it's \
            not!\n", 1900+ltm.tm_year);
	    while (!ltm.tm_isdst)
	    {
		ltm.tm_mday++;
		ltm.tm_isdst=-1;
		tstamp = mktime(&ltm);
	    }
	    printf("\tDST is reported as starting on  \
            %d/%d/%d\n", 1+ltm.tm_mon, ltm.tm_mday, \
	    1900+ltm.tm_year);

            ltm.tm_mday = 1;
	}

        ltm.tm_year++;

    }

    return 0;
}


// ----------------- end of sample program ---------------------------

.



Relevant Pages