drogonframework/drogon

Same issue than trantor::Date https://github.com/an-tao/trantor/pull/140

Fechada

#2.534 aberto em 18 de jun. de 2026

 (0 comentário) (0 reação) (0 responsável)C++ (1.014 forks)batch import
good first issue

Métricas do repositório

Stars
 (10.462 estrelas)
Métricas de merge de PR
 (Mesclagem média 5d 16h) (3 fundiu PRs em 30d)

Description

Hi,

To take DST into account, mktime need tm.is_dst to be set to -1: https://en.cppreference.com/cpp/chrono/c/mktime Notes If the std::tm object was obtained from std::get_time or the POSIX [strptime](https://pubs.opengroup.org/onlinepubs/009695399/functions/strptime.html), the value of tm_isdst is indeterminate, and needs to be set explicitly before calling mktime.

The same code from trantor::Date need to be set in src/drogon_ctl/templates/model_cc.csp:

$$<<"            struct tm stm;\n";
$$<<"            memset(&stm,0,sizeof(stm));\n";
$$<<"            strptime(daysStr.c_str(),\"%Y-%m-%d\",&stm);\n";
$$<<"            time_t t = mktime(&stm);\n";

Templates need to be change into:

$$<<"            struct tm stm;\n";
$$<<"            memset(&stm,0,sizeof(stm));\n";
$$<<"            stm.is_dst = -1;\n";
$$<<"            strptime(daysStr.c_str(),\"%Y-%m-%d\",&stm);\n";
$$<<"            time_t t = mktime(&stm);\n";

thanks !

Guia do colaborador