@@ -35,45 +35,55 @@ using namespace std::chrono_literals;
35
35
int main()
36
36
{
37
37
std::cout << std::boolalpha;
38
- {
39
- chrono::utc_time now = chrono::utc_clock::now();
40
- chrono::leap_second_info info = chrono::get_leap_second_info(now);
41
38
42
- std::cout << info.is_leap_second << std::endl;
43
- std::cout << info.elapsed.count() << std::endl;
39
+ // 2016-12-31 23:59:59 UTC
40
+ chrono::utc_time tp = chrono::clock_cast<chrono::utc_clock>(chrono::sys_days{2017y/1/1});
41
+ tp -= 2s;
42
+ {
43
+ chrono::leap_second_info info = chrono::get_leap_second_info(tp);
44
+ std::cout << tp << std::endl;
45
+ std::cout << info.is_leap_second << " " << info.elapsed.count() << std::endl;
44
46
}
45
- std::cout << std::endl;
47
+
48
+ // 日本標準時(JST)2017年1月1日にうるう秒挿入が実施された
49
+ // 2016-12-31 23:59:60 UTC
50
+ tp += 1s;
46
51
{
47
- // 2017年1月1日はうるう秒が挿入された日
48
- chrono::utc_time date = chrono::clock_cast<chrono::utc_clock>(chrono::sys_days{2017y/1/1});
49
- chrono::leap_second_info info = chrono::get_leap_second_info(date);
52
+ chrono::leap_second_info info = chrono::get_leap_second_info(tp);
53
+ std::cout << tp << std::endl;
54
+ std::cout << info.is_leap_second << " " << info.elapsed.count() << std::endl;
55
+ }
50
56
51
- std::cout << info.is_leap_second << std::endl;
52
- std::cout << info.elapsed.count() << std::endl;
57
+ // 2017-01-01 00:00:00 UTC
58
+ tp += 1s;
59
+ {
60
+ chrono::leap_second_info info = chrono::get_leap_second_info(tp);
61
+ std::cout << tp << std::endl;
62
+ std::cout << info.is_leap_second << " " << info.elapsed.count() << std::endl;
53
63
}
54
64
}
55
65
```
56
66
* chrono::get_leap_second_info[ link get_leap_second_info.md]
57
67
* chrono::utc_time[ link utc_time.md]
58
68
* chrono::utc_clock[ link utc_clock.md]
59
- * now()[ link utc_clock/now.md]
60
69
* count()[ link duration/count.md]
61
70
* 2017y[ link year/op_y.md]
62
71
* chrono::sys_days[ link sys_time.md]
63
72
* chrono::clock_cast[ link clock_cast.md]
64
73
65
- ### 出力例
74
+ ### 出力
66
75
```
67
- false
68
- 27
69
-
70
- true
71
- 27
76
+ 2016-12-31 23:59:59
77
+ false 26
78
+ 2016-12-31 23:59:60
79
+ true 27
80
+ 2017-01-01 00:00:00
81
+ false 27
72
82
```
73
83
74
84
### 処理系
75
85
- [ Clang] ( /implementation.md#clang ) : 9.0 [ mark noimpl]
76
- - [ GCC] ( /implementation.md#gcc ) : 9.2 [ mark noimpl]
86
+ - [ GCC] ( /implementation.md#gcc ) : 9.2 [ mark noimpl] , 13.2 [ mark impl ]
77
87
- [ Visual C++] ( /implementation.md#visual_cpp ) : 2019 Update 3 [ mark noimpl]
78
88
79
89
82
92
83
93
84
94
## 参照
95
+ - [ 日本標準時プロジェクト Information of Leap second] ( https://jjy.nict.go.jp/QandA/data/leapsec.html )
85
96
- [ P1466R3 Miscellaneous minor fixes for chrono] ( http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1466r3.html )
0 commit comments