ローカルの日付/時刻を含む文字列があり、それを time_t 値 (UTC) に変換する必要があります-これを試してみました:
char* date = "2009/09/01/00";
struct tm cal = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL};
strptime(date, "%Y/%m/%d/%H", &cal);
time_t t = mktime(&cal);
しかし、返される time_t 値は、文字列がローカル時間ではなく UTC として解析された場合に期待される値です。strptime が何をすべきかを誤解しているかもしれませんが、9 月 1 日の私のタイムゾーン (英国) では BST (つまり、UTC + 1 時間) を使用しているため、最終的に得られる値は UTC より 1 時間進んでいると予想されます。 .
その日付に有効であった UTC オフセットを自動的に考慮して、文字列を現地時間として解釈する方法はありますか? struct tm ではなく time_t 値が必要であることに注意してください。上記の例では、time_t 値を 2009-09-01 01:00:00 GMT に対応させたいと考えています。