CTimeからVariantTime(DATE)に変換するTips

突然ですが、一瞬悩んだので備忘録。
ATL/MFCのCTimeをローカルに持っていて、COMでVariant Timeで返したいとき。
CTime -> SYSTEMTIME -> VariantTImeの流れで変換します。

STDMETHODIMP CSwPlaylogItem::get_PlayedDate(/* [retval][out] */ DATE *pVal)
{
if (!pVal) return E_INVALIDARG;
SYSTEMTIME st;
if (m_xPlaylogItem.m_PlayedTime.GetAsSystemTime(st))
{
int nr = ::SystemTimeToVariantTime(&st, pVal);
if (nr == 0)
{
DWORD dwError = ::GetLastError();
return HRESULT_FROM_WIN32(dwError);
}
}
return S_OK;
}

人見知りソフトウェアエンジニアです。ビジュアル系、お笑い、Pixarが好き。勢いで吉本超合金おたけびBOTを作った。オールザッツ漫才が放送されない東京在住。

趣味や日常からアウトプットの場としてブログを書いています。自作のWordPressプラグインにGitHub Flavored MarkdownAmazonJSなど。