2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Visual BasicAdvent Calendar 2022

Day 9

もういくつ寝ると、2022年13月1日元旦

Last updated at Posted at 2022-12-09

はじめに

これは、Visual Basic Advent Calendar 2022 の9日目の記事です。
今更記事にする内容でもないのですが、カレンダーの隙間を少しでも埋められればと、、、

愉快なDateSerialメソッド

VB.NetのDateSerialメソッドは、年月日を表す3つのintを引数にとり、DateTime型の値を返す。(VBAでも同様に使える)

例えば、こんな風に、

Program.vb
Sub Main()
    Dim dt = DateSerial(2022, 13, 1)
    Console.WriteLine(dt)
End Sub

え?13月?

出力は、

> 2023/01/01 0:00:00

である。
年が1年繰り上がって月は12を引いて1月となる。
2022年13月1日は元旦か。しかし、これでは年が明けた気がしないなあ:sweat_smile:

続いて、これはどうか?

VB.Net
dt = DateSerial(2022, 0, 1)
Console.WriteLine(dt)
dt = DateSerial(2022, -1, 1)
Console.WriteLine(dt)
> 2021/12/01 0:00:00
> 2021/11/01 0:00:00

なるほど、0で12月なんだな。

更に、

VB.Net
dt = DateSerial(2022, 24, 1)
Console.WriteLine(dt)
dt = DateSerial(2022, -12, 1)
Console.WriteLine(dt)
dt = DateSerial(2022, -24, 1)
Console.WriteLine(dt)
> 2023/12/01 0:00:00
> 2020/12/01 0:00:00
> 2019/12/01 0:00:00

プラスは12を引いて、引いた数だけ年を繰り上げる。
マイナスは12を足して、足しただけ年を繰り下げる。

で、これは、

VB.Net
dt = DateSerial(2022, 12, 365)
Console.WriteLine(dt)
> 2023/11/30 0:00:00

何でも受け入れてくれるんだね。

C#で使う場合

C#で使うと、Microsoft.VisualBasic名前空間のDateAndTimeクラスのメソッドだとわかる。
例えばこんな風に、

C#
using Microsoft.VisualBasic;

var dt = DateAndTime.DateSerial(2022, 12, 24);
Console.WriteLine(dt);

出力は、

> Merry X'mas!

お、すげ〜な、C# 

もちろん冗談ですw
:christmas_tree::santa_tone1::christmas_tree::santa_tone1::christmas_tree::santa_tone1::christmas_tree::santa_tone1::christmas_tree::santa_tone1::christmas_tree::santa_tone1::christmas_tree::santa_tone1::christmas_tree:

■DateAndTime.DateSerial(Int32, Int32, Int32) メソッド

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?