最終更新日時: 2026年06月15日 14時22分22秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<ctime>

# std::localtime_r(C++26)

    namespace std {
      tm* localtime_r(const time_t* timer, tm* buf);
    }

## 概要

経過秒 (`time_t`) を、ローカル時間で表現されたカレンダー時間 (`tm`構造体) に変換する。

`localtime`と異なり、結果を利用者が用意したバッファ`buf`に格納するため、スレッドセーフである。

C23で`<time.h>`に追加された関数であり、C++26で`<ctime>`に取り込まれた。

## 効果

`timer`が指すカレンダー時間を、ローカル時間で表現された要素別の時間に変換し、`buf`が指す構造体に格納する。

## 戻り値

変換した要素別の時間 (`buf`) を指すポインタを返す。

指定された時間をローカル時間に変換できない場合、ヌルポインタを返す。

## 例

    #include <ctime>
    #include <print>

    int main()
    {
      std::time_t t = std::time(nullptr);

      std::tm result;
      if (std::localtime_r(&t, &result) != nullptr) {
        std::println("{}", result.tm_year + 1900);
      }
    }

### 出力例

    2026

## バージョン

### 言語

- C++26

### 処理系

- Clang: 22 ❌
- GCC: 16.1 ❌
- Visual C++: 2026 Update 2 ❌

## 関連項目

- `localtime`: 経過秒からローカル時間のカレンダー時間を生成する
- `gmtime_r`: 経過秒からUTCのカレンダー時間を生成する (バッファ指定)

## 参照

- P3348R4 C++26 should refer to C23 not C17
  - C++26がC23を参照するようになり、この関数が`<ctime>`に追加された