/
710.txt
128 lines (94 loc) · 4.86 KB
/
710.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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
[1] [DFN[[[日時]]の処理]]は、簡単に見えて難しいものです。
* 表現
[SEE[ データモデルは[[日時データモデル]] ]]
[SEE[ 構文やデータ型は[[日時形式]] ]]
* 演算
[FIG(short list)[ [8] [DFN[[[日時]]の[[演算]]]]
- [[期間計算]]
- 所属と前後日時の取得
-- [[前日]]、[[今日]]、[[翌日]]
-- [[前週]]、[[今週]]、[[来週]]
-- 直近7日
-- [[前月]]、[[今月]]、[[翌月]]
-- 直近30日
-- [[四半期]]
-- [[半期]]
-- [[昨年]]、[[今年]]、[[来年]]
-- [[月初]]、[[月末]]
-- [[月度]]
-- [[年度]]
- [[日時の比較]]
- [[日時の整列]]
- [[暦の換算]]
-- [[曜日]]
- 一覧の取得
-- [[年]]の一覧
-- [[年]]内の[[月]]の一覧
-- [[月]]内の[[日]]の一覧
- [[月]]の[[カレンダー]]の構成
- [[日時入力]]
- 機械的入力の[[構文解析]]
-- [[日時形式]]
- 文字列化
-- [[日時形式]]
-- [[日時表示]]
]FIG]
* 問題
[6] [[日時]]を[[計算機システム]]等で処理する際には、
様々な問題に注意する必要があります。
[FIG(short list)[ [7] 日時処理の問題
- [[日時のセキュリティー]]
- [[日時のプライバシー]]
- [[日時桁溢れ問題]]
-- [[2000年問題]]
-- [[2038年問題]]
- [[閏年]]
- [[閏秒]]
- [[過去の日時]]
- [[将来の日時]]
- [[時刻同期]]
- [[標準時改正]]
- [[夏時刻]]
- [[改暦]]
- [[西暦和暦誤認バグ]]
]FIG]
* 実装
[FIG(short list)[ [2] [[日時処理]]の実装
- [CODE[[[Date]]]]
- [CODE[[[DateTime.pm]]]]
- [CODE[[[Time::Piece]]]]
- [[Noda Time]]
- [[XFDLの日時処理]]
- [[XDMの日時処理]]
]FIG]
* 関連
[4] [[日次処理]]はまた違います。
* メモ
[3] [CITE[The Best Of Dates, The Worst Of Dates]], [[Gilbert Healton]], [TIME[2016-02-13 05:20:01 +09:00]] <http://x109.healton.net/y2k/yrexamples.html>
[5] [CITE['''['''tz''']''' Temporal - ECMAScript built-in JS Library for dates/times/timezones/calendars in progress]]
([TIME[2021-03-04T21:11:34.000Z]], [TIME[2021-03-05T01:51:17.570Z]])
<https://mm.icann.org/pipermail/tz/2021-March/029899.html>
[9] [CITE@ja[タイムゾーン呪いの書 (知識編)]], [TIME[2021-07-07T00:54:22.000Z]] <https://zenn.dev/dmikurube/articles/curse-of-timezones-common-ja>
[10] [CITE@en[COCOA v1.4.0 が起動しない · Issue #517 · cocoa-mhlw/cocoa · GitHub]], [TIME[2021-11-30T09:48:11.000Z]] <https://github.com/cocoa-mhlw/cocoa/issues/517#issuecomment-978988403>
> [CODE[DateTime()]]は[CODE[0001/01/01 0:00:00]]で、そこからさらに9時間を引こうとしているので怒られている。
> DateTime.MinValueと同値であれば引かないようにとか考えたけど、DateTime.MinValueと同値ではない[CODE[0001/01/01 0:08:00]]から9時間引こうとするとやっぱり落ちるよねと。
[FIG(quote)[
[FIGCAPTION[
[11] [CITE@ja[DateTime.MinValue や new DateTime() は危険 - Cube Lilac]]
([[clown]], [TIME[2021-11-30T09:53:39.000Z]])
<https://clown.cube-soft.jp/entry/2021/11/26/datetime-trap>
]FIGCAPTION]
> 例えば、DateTime.MinValue.ToUniversalTime() は、予想に反して、例外を発生させずに正常終了します(日時の値は変更されずにタイムゾーンの値のみ UTC になる)。ただ、DataContractJsonSerializer の事例のようにライブラリ側で変換処理が実行されて例外が発生する事も多いため、万全を期すのであればライブラリに指定する全ての DateTime オブジェクトに対して ToUniversalTime 等を実施しなければならず、結構な負担となります。
]FIG]
[12] [CITE@ja[606さんはTwitterを使っています 「Dropboxがおかしくて、毎回、関ヶ原終わりたてホヤホヤの頃のExcelファイルが出土されます 巻物でやれ https://t.co/hCLpKXDfde」 / Twitter]]
([TIME[2022-01-20T08:18:34.000Z]], [TIME[2022-01-21T01:39:14.102Z]])
<https://twitter.com/bumWings/status/1483989654378405888>
[13] [CITE@ja-jp[日付と時刻のデータ型および関数 - SQL Server (Transact-SQL) | Microsoft Docs]], [[markingmyname]], [TIME[2022-04-22T09:07:51.000Z]] <https://docs.microsoft.com/ja-jp/sql/t-sql/functions/date-and-time-data-types-and-functions-transact-sql?view=sql-server-ver15>
-
[14]
[CITE[時間情報を取り扱うための課題の整理を試みる―日本史資料を題材に―]],
[[後藤真]]
-- [15]
[CITE[第25回「東洋学へのコンピュータ利用」研究セミナー]], [TIME[2014-03-15T00:43:49.000Z]], [TIME[2022-04-28T08:52:42.771Z]] <http://kanji.zinbun.kyoto-u.ac.jp/seminars/oricom/2014.html>
-- [16]
[CITE@ja[第25回「東洋学へのコンピュータ利用」研究セミナー(#zinbun #jinbun) (2ページ目) - Togetter]], [TIME[2022-04-28T08:52:51.000Z]] <https://togetter.com/li/642076?page=2>