Привет, 5 июня 2004 г., 15:04:58, ты писал(а):
VR>> Hапример, тем, что не любая минута за истекший период VR>> времени состояла VR>> из 60 секунд.
AM> И что из того? Да, я это знаю (Еще бы мне это не знать, поскольку AM> разработка AM> дивайса, вставляющего и выкусывающего эти секунды, ложится на меня). AM> И если уж AM> быть пуристами, то вместо AM>>> January 1, 1970, Coordinated Universal Time. AM> использовать придется не UTC, а AT, как это делает GPS, либо GMT. И AM> то и другое AM> время имеют минуты _всегда_ по 60 секунд.
AM> А теперь тебе вопрос: каким образом (имя функции) можно узнать, AM> какая минута AM> содержит сколько секунд?
MSDN вещает, что:
The time function returns the number of seconds elapsed since midnight (00:00:00), January 1, 1970, coordinated universal time (UTC), according to the system clock. The return value is stored in the location given by timer. This parameter may be NULL, in which case the return value is not stored.
И приводит пример:
// crt_times.c /* This program demonstrates these time and date functions: * _time64 _ftime64 _ctime64 asctime * _localtime64 _gmtime64 _mktime64 _tzset * _strtime _strdate strftime * * Also the global variable: * _tzname */
#include <time.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/timeb.h>
#include <string.h>
int main() { char tmpbuf[128], ampm[] = "AM"; __time64_t ltime; struct __timeb64 tstruct; struct tm *today, *gmt, xmas = { 0, 0, 12, 25, 11, 93 };
/* Set time zone from TZ environment variable. If TZ is not set, * the operating system is queried to obtain the default value * for the variable. */ _tzset();
/* Display operating system-style date and time. */ _strtime( tmpbuf ); printf( "OS time:\t\t\t\t%s\n", tmpbuf ); _strdate( tmpbuf ); printf( "OS date:\t\t\t\t%s\n", tmpbuf );
/* Get UNIX-style time and display as number and string. */ _time64( <ime ); printf( "Time in seconds since UTC 1/1/70:\t%ld\n", ltime ); printf( "UNIX time and date:\t\t\t%s", _ctime64( <ime ) );
/* Display UTC. */ gmt = _gmtime64( <ime ); printf( "Coordinated universal time:\t\t%s", asctime( gmt ) );
/* Convert to time structure and adjust for PM if necessary. */ today = _localtime64( <ime ); if( today->tm_hour >= 12 ) { strcpy( ampm, "PM" ); today->tm_hour -= 12; } if( today->tm_hour == 0 ) /* Adjust if midnight hour. */ today->tm_hour = 12;
/* Note how pointer addition is used to skip the first 11 * characters and printf is used to trim off terminating * characters. */ printf( "12-hour time:\t\t\t\t%.8s %s\n", asctime( today ) + 11, ampm );
/* Print additional time information. */ _ftime64( &tstruct ); printf( "Plus milliseconds:\t\t\t%u\n", tstruct.millitm ); printf( "Zone difference in hours from UTC:\t%u\n", tstruct.timezone/60 ); printf( "Time zone name:\t\t\t\t%s\n", _tzname[0] ); printf( "Daylight savings:\t\t\t%s\n", tstruct.dstflag ? "YES" : "NO" );
/* Make time for noon on Christmas, 1993. */ if( _mktime64( &xmas ) != (__time64_t)-1 ) printf( "Christmas\t\t\t\t%s\n", asctime( &xmas ) );
/* Use time structure to build a customized time string. */ today = _localtime64( <ime );
/* Use strftime to build a customized time string. */ strftime( tmpbuf, 128, "Today is %A, day %d of %B in the year %Y.\n", today ); printf( tmpbuf ); } Sample Output OS time: 14:15:49 OS date: 02/07/02 Time in seconds since UTC 1/1/70: 1013120149 UNIX time and date: Thu Feb 07 14:15:49 2002 Coordinated universal time: Thu Feb 07 22:15:49 2002
12-hour time: 02:15:49 PM Plus milliseconds: 455 Zone difference in hours from UTC: 8 Time zone name: Pacific Standard Time Daylight savings: NO Christmas Sat Dec 25 12:00:00 1993
Today is Thursday, day 07 of February in the year 2002.
Всего хорошего.