Implemented GetDateFormatW.
This commit is contained in:
parent
f9650f40b5
commit
3acab71ed0
|
@ -1898,13 +1898,64 @@ INT WINAPI GetDateFormatW(LCID locale,DWORD flags,
|
||||||
LPCWSTR format,
|
LPCWSTR format,
|
||||||
LPWSTR date, INT datelen)
|
LPWSTR date, INT datelen)
|
||||||
{
|
{
|
||||||
unsigned short datearr[] = {'1','9','9','4','-','1','-','1',0};
|
WCHAR format_buf[40];
|
||||||
|
LPCWSTR thisformat;
|
||||||
|
SYSTEMTIME t;
|
||||||
|
LPSYSTEMTIME thistime;
|
||||||
|
LCID thislocale;
|
||||||
|
INT ret;
|
||||||
|
FILETIME ft;
|
||||||
|
BOOL res;
|
||||||
|
|
||||||
FIXME("STUB (should call OLE_GetFormatW)\n");
|
TRACE("(0x%04lx,0x%08lx,%p,%s,%p,%d)\n",
|
||||||
lstrcpynW(date, datearr, datelen);
|
locale,flags,xtime,debugstr_w(format),date,datelen);
|
||||||
return ( datelen < 9) ? datelen : 9;
|
|
||||||
|
if (!locale) {
|
||||||
|
locale = LOCALE_SYSTEM_DEFAULT;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (locale == LOCALE_SYSTEM_DEFAULT) {
|
||||||
|
thislocale = GetSystemDefaultLCID();
|
||||||
|
} else if (locale == LOCALE_USER_DEFAULT) {
|
||||||
|
thislocale = GetUserDefaultLCID();
|
||||||
|
} else {
|
||||||
|
thislocale = locale;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (xtime == NULL) {
|
||||||
|
GetSystemTime(&t);
|
||||||
|
} else {
|
||||||
|
/* Silently correct wDayOfWeek by transforming to FileTime and back again */
|
||||||
|
res=SystemTimeToFileTime(xtime,&ft);
|
||||||
|
/* Check year(?)/month and date for range and set ERROR_INVALID_PARAMETER on error */
|
||||||
|
/*FIXME: SystemTimeToFileTime doesn't yet do that check */
|
||||||
|
if(!res) {
|
||||||
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
FileTimeToSystemTime(&ft,&t);
|
||||||
|
|
||||||
|
};
|
||||||
|
thistime = &t;
|
||||||
|
|
||||||
|
if (format == NULL) {
|
||||||
|
GetLocaleInfoW(thislocale, ((flags&DATE_LONGDATE)
|
||||||
|
? LOCALE_SLONGDATE
|
||||||
|
: LOCALE_SSHORTDATE),
|
||||||
|
format_buf, sizeof(format_buf)/sizeof(*format_buf));
|
||||||
|
thisformat = format_buf;
|
||||||
|
} else {
|
||||||
|
thisformat = format;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
ret = OLE_GetFormatW(thislocale, flags, 0, thistime, thisformat,
|
||||||
|
date, datelen);
|
||||||
|
|
||||||
|
|
||||||
|
TRACE("GetDateFormatW() returning %d, with data=%s\n",
|
||||||
|
ret, debugstr_w(date));
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
|
|
Loading…
Reference in New Issue