/
28.txt
75 lines (58 loc) · 2.61 KB
/
28.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
[2]
[[C言語]]の [CODE[time.h]] の[[構造体]]
[DFN[[CODE[tm]]]]
は、[[日時]]を表します。
[10]
[[Perl]] では[[リスト]]で表します。[SRC[>>9]]
* 仕様書
[REFS[
- [1] [CITE[ISO/IEC 9899:yyyy - n2310.pdf]] ([TIME[2018-11-12 09:13:34 +09:00]]) <http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2310.pdf#page=287>
- [9] [CITE@en-gb[localtime - perldoc.perl.org]] ([TIME[2017-11-06 02:49:32 +09:00]]) <https://perldoc.perl.org/functions/localtime.html>
]REFS]
* 意味
[3] [CODE[tm]] は、 [[calendar time]] の各 component を保持します。
すなわち [DFN[broken-down time]] を表します。 [SRC[>>1]]
* メンバー
[4] 次のメンバーを持ちます。 [SRC[>>1]]
[FIG(list members)[
: [CODE[tm_sec]] :
[[分]]からの[[秒]] [CODE[int]] [ [N[0]], [N[60]] ]
([N[60]] は[[正閏秒]])
: [CODE[tm_min]] :
[[時]]からの[[分]] [CODE[int]] [ [N[0]], [N[59]] ]
: [CODE[tm_hour]] :
[RUBYB[[[深夜]]]@en[midnight]]からの[[時]] [CODE[int]] [ [N[0]], [N[23]] ]
: [CODE[tm_mday]] :
[[月]]の[[日]] [CODE[int]] [ [N[1]], [N[31]] ]
: [CODE[tm_mon]] :
[[January]] からの[[月]] [CODE[int]] [ [N[0]], [N[11]] ]
: [CODE[tm_year]] :
[TIME[1900年][year:1900]]からの[[年]] [CODE[int]]
: [CODE[tm_wday]] :
[[Sunday]] からの[[日]] [CODE[int]] [ [N[0]], [N[6]] ]
: [CODE[tm_yday]] :
[[January]] 1日からの[[日]] [CODE[int]] [ [N[0]], [N[365]] ]
: [CODE[tm_isdst]] :
[[DST]] フラグ [CODE[int]] :
[[DST]] 中は[[正]]、
[[DST]] 外は [N[0]]、
不明なら[[負]]。
[CODE[mktime]] では、
[[正]]か [N[0]] なら [[DST]] 中・外の[[時刻]]とみなして解釈しようとし、
[[負]]なら指定[[時刻]]が [[DST]] 中かどうか判定しようとします。
]FIG]
[7] [CODE[mktime]] は[[値域]]外の値が与えられても受け入れ、
適切な値に置き換えようとします。 [SRC[>>1]]
* 文脈
[5] [[C言語]]と [[Perl]] の
[CODE[gmtime]], [CODE[localtime]] は [CODE[time_t]] を [CODE[tm]]
に変換します。
[8] [[C言語]]の [CODE[mktime]] は [CODE[tm]] を受け取り [CODE[time_t]] を返します。
[13] [[Perlモジュール]]の [CODE[Time::Local]] は
[CODE[tm]] [[リスト]]を受け取り [CODE[time_t]] を返します。
[[2桁西暦年号の解釈]]の特殊な規則があるため
[CODE[gmtime]]/[CODE[localtime]] の完全な逆演算にはなっていません。
[REFS[
- [12] [CITE@en[houseabsolute/Time-Local: Efficiently compute time from local and GMT time]] ([TIME[2019-04-21 11:01:53 +09:00]]) <https://github.com/houseabsolute/Time-Local>
]REFS]
* メモ