可视化转换日期到字符串在COM c++

visual convert date to string in COM c++

本文关键字:COM c++ 字符串 转换 日期 可视化      更新时间:2023-10-16

我花了一整晚的时间找到一个例子,将c++的DATE数据类型转换为COMM中的字符串。我的接口函数返回以下值,我想显示人类可读格式的值。如,

DATE JobStartTime;
CurrentJob->get_StartTime(&JobStartTime);

它返回的值是,

16324.5455等。

当我打开DATE的定义时它会显示如下内容

typedef double DATE;

这又让我困惑了。作为DATE,它又是双精度的,那么我该如何将它转换成像

这样的格式呢?

02/05/2013 11.41.25

等。请帮助我,我是一个很新的在通信

DATE是COM自动化类型。您可以使用VariantTimeToSystemTime或VariantTimeToDosDateTime:

DATE JobStartTime;
CurrentJob->get_StartTime(&JobStartTime);
SYSTEMTIME st;
VariantTimeToSystemTime(JobStartTime, &st);

你也可以使用SystemTimeToFileTime:

将其转换为文件时间
FILETIME ft;
SystemTimeToFileTime(st, &ft);

您应该编写自己的转换函数来获得所需的转换。@John的链接非常适合你msdn.microsoft.com/en-US/library/82ab7w69%28v=vs.80%29.aspx.

快捷方式:0.00应该代表30 December 1899, midnight每个+1.0都是一个+day和每个+0.25都是+6 hours

例如

:2.01 January 1900, midnight2.251 January 1900, 6 AM2.51 January 1900, noon

看这里http://msdn.microsoft.com/en-US/library/by5d3kb1%28v=vs.80%29.aspx

我从来没有使用过这个类,但从文档来看,它看起来像是你想要的

DATE JobStartTime;
...
CString formattedDate = COleDateTime(JobStartTime).Format();

如何使用VariantTimeToSystemTime

#include <windows.h>
#include <stdio.h>
int main()
{
    DATE date = 16324.5455;
    SYSTEMTIME systime;
    VariantTimeToSystemTime(date, &systime);
    printf("%02u/%02u/%04u %02d.%02d.%02dn", systime.wDay, systime.wMonth, systime.wYear, systime.wHour, systime.wMinute, systime.wSecond);
}

输出为09/09/1944 13.05.31

我认为最好的选择是VariantTimeToSystemTime(如Simon状态),然后是GetTimeFormat(取决于地区)