C++20ライブラリ機能 読書会vol.30
https://scrapbox.io/files/655e07307255b8001c015b72.png
開催日時
2024年7月17日(水) 21:00~22:30
開催URL
参加人数
5人
ウォーミングアップ
アマゾンプライムデー
13.2.4 時刻との結合
year_month_dayは年月日情報しか持たず、時刻の情報を持っていない
一度year_month_day型の値をtime_point型の値に変換してから時刻情報を設定することでdatetime情報を保持できる
system_clockなどの~clockはクロック情報を持っている
そのクロック数から具体的な時間に変換したのがsys_time
time_pointはテンプレート
sys_timeなどはそのテンプレートを特殊化したもの
13.2.5 時刻計算とカレンダー計算
日週月年の単位を指定されたduration型エイリアス、days, weeks, years, monthsが用意されており
「日週月年」と書くならyearsとmonthsの順序が逆 #typo days, weeks, months, years
それぞれ日週月年の単位を指定されたduration型エイリアス
364.2425[日]×24[時間]×3600[秒]
これ364.2425じゃなくて365.2425じゃない? #typo 365+365+365+366=1,461
365.2425*4=1,460.97 で近い値になる
4年単位ではなく400年単位で計算すると365.2425で近い値になった
https://scrapbox.io/files/6697bde5154812001c88b637.png
年は、400年に97回だけうるう年があるため、400年分の日数146097を400で割った平均的な年の日数として定義される
146097 / 400 = 365.2425 で一致
1d + 1dはなんでダメなの?
ここの1dは「いちにち」ではなく「ついたち」でカレンダー情報
これらは足せない
ポインタとポインタを足せないのに似ている
ポインタとポインタの引き算はできる
ポインタと同じようにday型同士の減算でdaysを求めたりできないかな
できるならこの後出てきそう
カレンダー型同士の間で足し引きすることはできません
できないみたい
0dってない?
無効な日付は入れれるけど使う側で気をつけろスタイル
.ok() メンバ関数でチェックできる
ユーザー任せで実にC++っぽい
--mmで1月をデクリメントにすると12月になるの調子よすぎ
--ddはゼロになる。さらにデクリメントしたら255になる
--1yは0000になり、--0yは-0001になった
西暦1年をデクリメントしたらゼロ年はなく紀元前1年では?
13.3 タイムゾーン
次回ここから
お悩み雑談室
先週からのお悩みの続き