# std::chrono::operator<<(std::chrono::month)

< cpp‎ | chrono‎ | month

定义于头文件 `<chrono>` |  |
template <class CharT, class Traits> std::basic_ostream<CharT, Traits>& operator<<(std::basic_ostream<CharT, Traits>& os, const std::chrono::month& m); |  | (C++20 起)

若 !m.ok() ，则插入 unsigned(m) 后随 " is not a valid month" 到 `os` 。否则，构成由 `m` 所表示的月的，以与 `os` 关联的本地环境确定的缩写月份名组成的 `std::basic_string<CharT>` `s` ，并插入 `s` 到 `os` 中。

等价于

return os << (m.ok() ?
std::format(os.getloc(), STATICALLY_WIDEN<CharT>("{:L%b}"), m) :
std::format(os.getloc(), STATICALLY_WIDEN<CharT>("{} is not a valid month"), unsigned(m)));

其中 STATICALLY_WIDEN<CharT>("...") 若 `CharT` 为 char 则为 "..." ，而若 `CharT` 为 wchar_t 则为 L"..." 。

### 返回值

`os` 。

### 注解

此 `operator<<` 主要为调试用途而设，对于格式化上的控制，请用 std::format 。

### 缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

DR | 应用于 | 出版时的行为 | 正确行为
--- | --- | --- | ---
P2372R3 | C++20 | 默认使用给定的本地环境 | 需要 `L` 以使用本地环境

### 参阅

format (C++20) | 在新 string 中存储参数的格式化表示 (函数模板)
std::formatter<std::chrono::month> (C++20) | std::formatter 的特化，按照提供的格式格式化 `month` (类模板特化)