C ++ Как конвертировать строку ГГГГММДД в ​​метку времени - PullRequest
0 голосов
/ 03 марта 2020

У меня есть программа, которая устанавливается на моем ноутбуке в файл json.

Я получаю дату установленной программы из реестра и хочу преобразовать эту дату в метку времени.

Это мой код:

HKEY hUninstKey = NULL;
HKEY hAppKey = NULL;

WCHAR InstallDate[1024];
WCHAR *sRoot = L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall";
long lResult = ERROR_SUCCESS;
DWORD dwType = KEY_ALL_ACCESS;
DWORD dwBufferSize = 0;

//Open the "Uninstall" key.
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, sRoot, 0, KEY_READ, &hUninstKey) != ERROR_SUCCESS)
{

}

for (DWORD dwIndex = 0; lResult == ERROR_SUCCESS; dwIndex++)
{
    //Enumerate all sub keys...
    dwBufferSize = sizeof(sAppKeyName);
    if ((lResult = RegEnumKeyEx(hUninstKey, dwIndex, sAppKeyName,
        &dwBufferSize, NULL, NULL, NULL, NULL)) == ERROR_SUCCESS)
    {
        //Open the sub key.

        if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, sSubKey, 0, KEY_READ, &hAppKey) != ERROR_SUCCESS)
        {
            RegCloseKey(hAppKey);
            RegCloseKey(hUninstKey);

        }

        //Get the display name value from the application's sub key.
        dwBufferSize = sizeof((RegQueryValueEx(hAppKey, L"InstallDate", NULL, &dwType, (unsigned char*)InstallDate, &dwBufferSize) == ERROR_SUCCESS))
        {

            // Display Date Of Installed Program
            const TCHAR* xInstallDate = (TCHAR*)InstallDate;
            char DateInstall[MAX_LENGTH + 200];
            wcstombs_s(&nNumCharConverted, DateInstall, MAX_LENGTH + 200,
                xInstallDate, MAX_LENGTH + 200);


            file << "\"',date='" << DateInstall  << endl;               
        }
        else {
            //Display name value doe not exist, this application was probably uninstalled.
        }


        RegCloseKey(hAppKey);
    }
}

RegCloseKey(hUninstKey);

Может ли кто-нибудь помочь с моим кодом?

1 Ответ

0 голосов
/ 03 марта 2020

Вы должны посмотреть на использование std::chrono::parse. Он преобразует струнные потоки в хроно-объекты, которые представляют время.

Это документация std :: chrono :: parse: https://en.cppreference.com/w/cpp/chrono/parse

Это актуальный вопрос для SO (возможно, вы дубликат): Как разобрать строку даты в точку времени c ++ 11 std :: chrono или аналогичную?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...