我从以下代码
中获取了该方法的Date值 DATE dDate;
hr = pADsUser->get_PasswordLastChanged(&dDate);
// pADsUser is pointer variable of IADsUser
日期类型在链接中描述 http://msdn.microsoft.com/en-us/library/82ab7w69%28v=vs.71%29.aspx
如何将这种日期转换为字符串,以便我可以在控制台中打印。
我没有在这个应用程序中使用MFC Dlls。所以我也不能使用COleDateTime类型。
是否有可用的内置方法或我是否需要手动计算日期?
答案 0 :(得分:5)
查看Boost.Lexical_cast是否转换为字符串。
您必须编写一个转换器函数,将DATE类型解压缩为(日期,时间)元组,以便lexical_cast不会从double转换。
根据文档,看起来日期类型是(日 - 1899-12-30)。 (时间 - 0)。
使用boost :: date_time,您可以使用日期时间(1899-12-30,0)创建时间对象,然后增加days(abs(DATE))
和hours((DATE - abs(DATE)) * 24)
。
答案 1 :(得分:0)
TCHAR *strDate = new TCHAR[12];
tm * ptm = gmtime ( &ttAppClosing );
int day = ptm->tm_mday;
int month = ptm->tm_mon+1;
int year = ptm->tm_year;
CString sDay = L"";
sDay.Format(L"%d", day);
if(day < 9)
sDay.Format(L"0%d", day);
CString sMonth = L"";
sMonth.Format(L"%d", month);
if(month < 9)
sMonth.Format(L"0%d", month);
_stprintf(strDate, L"%s-%s-%d", sDay, sMonth, 1900 + year);
CString sCloseDate(strDate);
答案 2 :(得分:-1)
为什么不使用底层API呢?如果计算字节数,那么与Boost链接可能会很昂贵:P
DATE d;
CComBSTR bstr;
VarBstrFromDate(d, lcid, dwFlags, &bstr);