59 { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
60 { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
70#define MIN_GMTIME64_TIME 0
71#define MAX_GMTIME64_TIME _MAX__TIME64_T
72#elif _MSVCR_VER >= 140
73#define MIN_GMTIME64_TIME -43200
74#define MAX_GMTIME64_TIME (_MAX__TIME64_T + 1605600)
76#define MIN_GMTIME64_TIME -43200
77#define MAX_GMTIME64_TIME (_MAX__TIME64_T + 46800)
82 return Year % 4 == 0 && (Year % 100 != 0 || Year % 400 == 0);
145 }
else if(*
tz ==
'+') {
206 }
else if(st->
wYear >= 2007) {
207 memset(&tmp, 0,
sizeof(tmp));
215 memset(&tmp, 0,
sizeof(tmp));
233#define SECSPERDAY 86400
235#define SECS_1601_TO_1970 ((369 * 365 + 89) * (ULONGLONG)SECSPERDAY)
236#define TICKSPERSEC 10000000
237#define TICKSPERMSEC 10000
238#define TICKS_1601_TO_1970 (SECS_1601_TO_1970 * TICKSPERSEC)
255 if(ret<70 || ret>1100) {
298 }
else if(mstm->
tm_isdst==0 && use_dst) {
419 if(!
data->time_buffer)
424 return data->time_buffer;
448 if (!
time || !secs || *secs < 0)
471 TRACE(
"res %p, secs %p (%I64d).\n",
res, secs, secs ? *secs : 0);
513 if(!
data->time_buffer)
518 return data->time_buffer;
711 return (
double)(time1 - time2);
719 return (
double)(time1 - time2);
788 return buf ? *
buf = curtime : curtime;
802 return buf ? *
buf = curtime : curtime;
889#define STRFTIME_CHAR char
890#define STRFTIME_TD(td, name) td->str.names.name
892#define STRFTIME_CHAR wchar_t
893#define STRFTIME_TD(td, name) td->wstr.names.name
896#define strftime_str(a,b,c,d) strftime_nstr(a,b,c,d,SIZE_MAX)
917 int src,
int prec,
int l,
int h)
954 if(
count % 2 == 0)
break;
1053 count == 1 ? 0 : 2, 1, 12);
1122 int year = mstm ? mstm->
tm_year + 1900 : -1;
1243 if(!alternate &&
str[
ret-2] ==
'0')
1265 int iso_year = year;
1269 else if(iso_days >= 365 +
IsLeapYear(iso_year))
1275 }
else if(*
format ==
'g') {
1293 alternate ? 0 : 2, 1, 12))
1327 alternate ? 0 : 2, 1, 12))
1529 const struct tm *mstm,
void *time_data)
1538 const struct tm *mstm )
1544 const wchar_t *
format,
const struct tm *mstm,
1586 const wchar_t *
format,
const struct tm *mstm )
1591#if _MSVCR_VER >= 110
1596 const wchar_t *
format,
const struct tm *mstm,
1605 static const char wday[7][4] = {
"Sun",
"Mon",
"Tue",
"Wed",
"Thu",
"Fri",
"Sat"};
1606 static const char month[12][4] = {
"Jan",
"Feb",
"Mar",
"Apr",
"May",
1607 "Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec"};
1641 if (!
data->asctime_buffer) {
1643 if (!
data->asctime_buffer) {
1682 if(!
data->wasctime_buffer) {
1683 data->wasctime_buffer =
malloc(26*
sizeof(
wchar_t));
1684 if(!
data->wasctime_buffer) {
1694 return data->wasctime_buffer;
1724 if (!
t)
return NULL;
1755 if (!
t)
return NULL;
1866#if _MSVCR_VER >= 140
1904 ts->
tv_sec = ts64.tv_sec;
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define _isleadbyte_l(_C, _L)
#define WideCharToMultiByte
#define MultiByteToWideChar
VOID WINAPI GetSystemTimeAsFileTime(OUT PFILETIME lpFileTime)
BOOL WINAPI FileTimeToSystemTime(IN CONST FILETIME *lpFileTime, OUT LPSYSTEMTIME lpSystemTime)
BOOL WINAPI SystemTimeToFileTime(IN CONST SYSTEMTIME *lpSystemTime, OUT LPFILETIME lpFileTime)
VOID WINAPI GetLocalTime(OUT LPSYSTEMTIME lpSystemTime)
VOID WINAPI GetSystemTimePreciseAsFileTime(OUT PFILETIME lpFileTime)
BOOL WINAPI SystemTimeToTzSpecificLocalTime(CONST TIME_ZONE_INFORMATION *lpTimeZoneInformation, CONST SYSTEMTIME *lpUniversalTime, LPSYSTEMTIME lpLocalTime)
DWORD WINAPI GetTimeZoneInformation(LPTIME_ZONE_INFORMATION lpTimeZoneInformation)
char *CDECL getenv(const char *name)
_ACRTIMP int __cdecl _snwprintf(wchar_t *, size_t, const wchar_t *,...)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP __msvcrt_long __cdecl strtol(const char *, char **, int)
_ACRTIMP size_t __cdecl strlen(const char *)
_ACRTIMP size_t __cdecl _strftime_l(char *, size_t, const char *, const struct tm *, _locale_t)
__lc_time_data cloc_time_data
void CDECL _lock(int locknum)
void CDECL _unlock(int locknum)
thread_data_t *CDECL msvcrt_get_thread_data(void)
#define MSVCRT_INVALID_PMT(x, err)
#define MSVCRT_CHECK_PMT(x)
int CDECL _localtime64_s(struct tm *res, const __time64_t *secs)
int CDECL _wctime64_s(wchar_t *buf, size_t size, const __time64_t *time)
int CDECL _wasctime_s(wchar_t *time, size_t size, const struct tm *mstm)
__msvcrt_long MSVCRT___timezone
int CDECL _localtime32_s(struct tm *time, const __time32_t *secs)
#define strftime_str(a, b, c, d)
static BOOL strftime_int(STRFTIME_CHAR *str, size_t *pos, size_t max, int src, int prec, int l, int h)
__time64_t CDECL _mktime64(struct tm *mstm)
char *CDECL asctime(const struct tm *mstm)
__time64_t CDECL _time64(__time64_t *buf)
void CDECL _ftime32(struct __timeb32 *buf)
struct tm *CDECL _localtime64(const __time64_t *secs)
#define TICKS_1601_TO_1970
#define STRFTIME_TD(td, name)
char *CDECL _ctime32(const __time32_t *time)
#define SECS_1601_TO_1970
static size_t wcsftime_helper(wchar_t *str, size_t max, const wchar_t *format, const struct tm *mstm, __lc_time_data *time_data, _locale_t loc)
#define MAX_GMTIME64_TIME
errno_t CDECL _ctime64_s(char *res, size_t len, const __time64_t *time)
struct tm *CDECL _gmtime32(const __time32_t *secs)
int CDECL _ftime32_s(struct __timeb32 *buf)
char *CDECL _ctime64(const __time64_t *time)
static BOOL strftime_nstr(STRFTIME_CHAR *str, size_t *pos, size_t max, const STRFTIME_CHAR *src, size_t len)
__time32_t CDECL _mktime32(struct tm *mstm)
int CDECL _strtime_s(char *time, size_t size)
wchar_t *CDECL _wctime32(const __time32_t *time)
struct tm *CDECL _localtime32(const __time32_t *secs)
int CDECL _wctime32_s(wchar_t *buf, size_t size, const __time32_t *time)
int CDECL _strdate_s(char *date, size_t size)
char **CDECL __p__tzname(void)
static __time64_t mktime_helper(struct tm *mstm, BOOL local)
static void write_invalid_msvcrt_tm(struct tm *tm)
__time32_t CDECL _time32(__time32_t *buf)
__msvcrt_long *CDECL __p__dstbias(void)
__msvcrt_long *CDECL __p__timezone(void)
clock_t CDECL clock(void)
static char * asctime_buf(char *buf, const struct tm *mstm)
__time32_t CDECL _mkgmtime32(struct tm *time)
size_t CDECL strftime(char *str, size_t max, const char *format, const struct tm *mstm)
errno_t CDECL _ctime32_s(char *res, size_t len, const __time32_t *time)
size_t CDECL _wcsftime_l(wchar_t *str, size_t max, const wchar_t *format, const struct tm *mstm, _locale_t loc)
size_t CDECL wcsftime(wchar_t *str, size_t max, const wchar_t *format, const struct tm *mstm)
static size_t strftime_impl(STRFTIME_CHAR *str, size_t max, const STRFTIME_CHAR *format, const struct tm *mstm, __lc_time_data *time_data, _locale_t loc)
int CDECL asctime_s(char *time, size_t size, const struct tm *mstm)
static size_t strftime_helper(char *str, size_t max, const char *format, const struct tm *mstm, __lc_time_data *time_data, _locale_t loc)
wchar_t *CDECL _wctime64(const __time64_t *time)
static void _tzset_init(void)
int CDECL _ftime64_s(struct __timeb64 *buf)
void msvcrt_init_clock(void)
int CDECL _wstrtime_s(wchar_t *time, size_t size)
static char tzname_std[64]
int CDECL _wstrdate_s(wchar_t *date, size_t size)
__msvcrt_long MSVCRT__dstbias
__time64_t CDECL _mkgmtime64(struct tm *time)
wchar_t *CDECL _wasctime(const struct tm *mstm)
static char tzname_dst[64]
int CDECL _get_tzname(size_t *ret, char *buf, size_t bufsize, int index)
static const int MonthLengths[2][12]
static TIME_ZONE_INFORMATION tzi
double CDECL _difftime32(__time32_t time1, __time32_t time2)
int *CDECL __p__daylight(void)
static LONGLONG init_time
static BOOL is_dst(const SYSTEMTIME *st)
int CDECL _gmtime64_s(struct tm *res, const __time64_t *secs)
struct tm *CDECL _gmtime64(const __time64_t *secs)
size_t CDECL _Strftime(char *str, size_t max, const char *format, const struct tm *mstm, void *time_data)
void CDECL _ftime64(struct __timeb64 *buf)
static BOOL strftime_format(STRFTIME_CHAR *str, size_t *pos, size_t max, const struct tm *mstm, __lc_time_data *time_data, const STRFTIME_CHAR *format)
int CDECL _gmtime32_s(struct tm *res, const __time32_t *secs)
static const int MAX_SECONDS
double CDECL _difftime64(__time64_t time1, __time64_t time2)
static const WCHAR month[12][4]
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum GLuint GLsizei bufsize
GLfloat GLfloat GLfloat GLfloat h
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define TIME_ZONE_ID_DAYLIGHT
NTSTATUS NTAPI NtQuerySystemTime(OUT PLARGE_INTEGER SystemTime)
_CRTIMP errno_t __cdecl _get_daylight(_Out_ int *_Daylight)
_CRTIMP errno_t __cdecl _get_dstbias(_Out_ long *_Daylight_savings_bias)
_CRTIMP errno_t __cdecl _get_timezone(_Out_ long *_Timezone)
struct __lc_time_data * lc_time_curr
int __cdecl _timespec64_get(_timespec64 *const ts, int const base)
int __cdecl _timespec32_get(_timespec32 *const ts, int const base)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
size_t __cdecl _Wcsftime(wchar_t *const buffer, size_t const max_size, wchar_t const *const format, tm const *const timeptr, void *const lc_time_arg)
#define TIME_ZONE_ID_INVALID