VT_DATE에서 불변의 VT_BSTR VARIANT 변환하려고합니다. 다음 코드는 Windows XP에서 작동합니다.PocketPC - VT_DATE 불변의 VT_BSTR로 변환
VARIANT va;
::VariantInit(&va);
// set the variant to VT_DATE
SYSTEMTIME st;
memset(&st, 0, sizeof(SYSTEMTIME));
st.wYear = 2008;
st.wMonth = 9;
st.wDay = 22;
st.wHour = 12;
st.wMinute = 30;
DATE date;
SystemTimeToVariantTime(&st, &date);
va.vt = VT_DATE;
va.date = date;
// change to a string
err = ::VariantChangeTypeEx(&va,
&va,
LOCALE_INVARIANT,
0,
VT_BSTR);
위의 코드는 PPC 2003 및 Windows Mobile 5에서 E_FAIL을 반환합니다. 누군가 위의 코드를 수정하거나 대안을 제공 할 수 있습니까?
EDIT : 날짜를 문자열로 변환 한 후 문자열을 사용하여 SQL 업데이트를 수행합니다. 업데이트가 장치의 국가 별 설정과 상관없이 작동하기를 바랍니다. 그래서이 정보를 "불변"형식으로 변환하려고합니다.
내가 지금 일을 나타나는 형식으로 날짜를 변환하려면 다음을 사용하고 있습니다 :
err = ::VariantTimeToSystemTime(va.date, &time);
if (FAILED(err))
goto cleanup;
err = strDate.PrintF(_T("%04d-%02d-%02d %02d:%02d:%02d.%03d"),
time.wYear,
time.wMonth,
time.wDay,
time.wHour,
time.wMinute,
time.wSecond,
time.wMilliseconds);
나는 알고 있다고 생각했지만 잘못되었습니다. 실제로 소스와 목적지에 대해 동일한 VARIANT를 사용할 수 있습니다. VARIANT가 VT_DATE로 설정되는 방법에 대한 자세한 정보를 추가 할 수 있습니까? –
동일한 E_FAIL 결과를 사용하여 VT_DATE를 설정하는 예를 변경했습니다. –