皆もすなるQiitaといふものを、儂もしてみむとてするなり。
と言う訳で、こん**は!はなっち!です。
DateTime型ってのは、単に日付とか日時を格納して、.ToString辺りで文字列化して、ファイル名の一部にしてみたりって位しか使っていなかったんですが、業務要件によっては「年度のフォルダの中にファイルがあるんだよね」なんて言われてしまって。。。
年度を求めるのには、COBOL的発想だと、月を持ってきて、1月、2月、3月だったら年 - 1だよね。。。なんてやってしまうのだけど、DateTime型には、「DateTime.AddMonths(Int32)」と言うありがたいメソッドがあるわけで。
日付 | 年度 | -1月 | -2月 | -3月 | -4月 |
---|---|---|---|---|---|
2020/5/1 | 2020 | 2020/4/1 | 2020/3/1 | 2020/2/1 | 2020/1/1 |
2020/4/1 | 2020 | 2020/3/1 | 2020/2/1 | 2020/1/1 | 2019/12/1 |
2020/3/1 | 2019 | 2020/2/1 | 2020/1/1 | 2019/12/1 | 2019/11/1 |
2020/2/1 | 2019 | 2020/1/1 | 2019/12/1 | 2019/11/1 | 2019/10/1 |
2020/1/1 | 2019 | 2019/12/1 | 2019/11/1 | 2019/10/1 | 2019/9/1 |
2019/12/1 | 2019 | 2019/11/1 | 2019/10/1 | 2019/9/1 | 2019/8/1 |
例えば日付に-3月を加算してあげれば(3月を減算として書きたいところだけど)、2020/3/1が2019/12/1となって2019年度となり、2020/4/1は2020/1/1となって2020年度となる。
ならば、3月始期の会社だったりすると、-3ではなく、-2してあげればいいんですね。
流石にプログラマだったりするとこのレベルだと既に実装しているだろうけど、最近のトレンド、「内製化」する会社の現場の方はちょっと覚束ない。
だもんで、一気に年度までを取得できる代入式を見せてあげている訳で。。。
左辺:年度(Int32)
右辺:日時.AddMonths(-3).Year
おわりに
いかがでした?
DateTime型はExcelシート上の日付でフィルタリング範囲に使ってみたり、先の例のように業務で管理単位とするなど、様々なシーンで扱うことが多い型です。是非UiAthでのロボ開発の一助になればと思っています。
ありがとうございました!
2020/7/9 初稿、日時.AddMonths(-3).Yearとすべきところを、日時.AddMinutes(-3).Yearとしていました。