Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将双日期转换为std::string_C++ - Fatal编程技术网

C++ 如何将双日期转换为std::string

C++ 如何将双日期转换为std::string,c++,C++,我从以下代码的方法中获得了日期值 DATE dDate; hr = pADsUser->get_PasswordLastChanged(&dDate); // pADsUser is pointer variable of IADsUser 链接中描述了日期类型 如何将此类日期转换为字符串,以便在控制台中打印它 我没有将MFC DLL用于此应用程序。所以我不能同时使用COleDateTime类型 是否有任何内置方法可用,或者我需要手动计算日期?查看Boost

我从以下代码的方法中获得了日期值

  DATE dDate;
  hr = pADsUser->get_PasswordLastChanged(&dDate);
  //   pADsUser is pointer variable of   IADsUser
链接中描述了日期类型

如何将此类日期转换为字符串,以便在控制台中打印它

我没有将MFC DLL用于此应用程序。所以我不能同时使用COleDateTime类型


是否有任何内置方法可用,或者我需要手动计算日期?

查看Boost.Lexical\u cast以实现字符串的转换

您必须编写一个转换函数,将日期类型解压为(日期、时间)元组,以便词法转换不会从double转换

根据文档,日期类型似乎是(day-1899-12-30)。(时间-0)


使用boost::date_-time,您可以创建一个带有日期时间(1899-12-30,0)的时间对象,然后增加
天(abs(date))
小时((date-abs(date))*24)

查看boost.Lexical_-cast以转换字符串

您必须编写一个转换函数,将日期类型解压为(日期、时间)元组,以便词法转换不会从double转换

根据文档,日期类型似乎是(day-1899-12-30)。(时间-0)


使用boost::date_time,您可以创建一个带有日期时间(1899-12-30,0)的时间对象,然后增加
天(abs(date))
小时((date-abs(date))*24)

为什么不使用底层API呢?如果您正在计算字节数,那么与Boost链接的成本可能会很高:P

DATE d;
CComBSTR bstr;
VarBstrFromDate(d, lcid, dwFlags, &bstr);

那么为什么不使用底层API呢?如果您正在计算字节数,那么与Boost链接的成本可能会很高:P

DATE d;
CComBSTR bstr;
VarBstrFromDate(d, lcid, dwFlags, &bstr);
TCHAR*strDate=新的TCHAR[12];
tm*ptm=gmtime(&ttAppClosing);
int day=ptm->tm\u mday;
整月=ptm->tm\U mon+1;
int year=ptm->tm\U year;
CString sDay=L”“;
星期四格式(L“%d”,天);
如果(第9天)
星期四格式(L“0%d”,天);
CString-sMonth=L”“;
格式(L“%d”,月);
如果(月<9)
格式(L“0%d”,月);
_stprintf(标准日期,L“%s-%s-%d”,星期四,斯蒙顿,1900年以上);
CString sCloseDate(标准日期);
TCHAR*strDate=新的TCHAR[12];
tm*ptm=gmtime(&ttAppClosing);
int day=ptm->tm\u mday;
整月=ptm->tm\U mon+1;
int year=ptm->tm\U year;
CString sDay=L”“;
星期四格式(L“%d”,天);
如果(第9天)
星期四格式(L“0%d”,天);
CString-sMonth=L”“;
格式(L“%d”,月);
如果(月<9)
格式(L“0%d”,月);
_stprintf(标准日期,L“%s-%s-%d”,星期四,斯蒙顿,1900年以上);
CString sCloseDate(标准日期);

谢谢您的回复。主要的挑战部分是从指定的日期类型中查找日期值,如(11 01 1985)。如何更改为日期格式,如(11 01 1985)。答案经过编辑,包括如何使用Boost.date\u Time以使用日期类型。@Prabhu您可以使用
gmtime\r
strftime
,但请注意,时间是从
1970-Jan-01 00:00 UTC+0000开始的秒,而不是从
1899-12-30开始的天。在一些32位系统上也容易出现Y2038。您最好使用现有的日期库将日期偏移量转换为日期结构,然后打印所述结构的字段。谢谢您的回复。主要的挑战部分是从指定的日期类型中查找日期值,如(11 01 1985)。如何更改为日期格式,如(11 01 1985)。答案经过编辑,包括如何使用Boost.date\u Time以使用日期类型。@Prabhu您可以使用
gmtime\r
strftime
,但请注意,时间是从
1970-Jan-01 00:00 UTC+0000开始的秒,而不是从
1899-12-30开始的天。在一些32位系统上也容易出现Y2038。您最好使用现有的日期库将日期偏移量转换为日期结构,然后打印所述结构的字段。OP明确告诉我们
此应用程序不使用MFC DLL。因此,我不能同时使用COleDateTime类型。
->因此,这个答案似乎遗漏了一点。OP明确告诉我们,
我没有将MFC DLL用于此应用程序。因此,我不能同时使用COleDateTime类型。
->因此,这个答案似乎缺少一点。非常欢迎添加一个关于正在做什么的小解释。非常欢迎添加一个关于正在做什么的小解释。