VB.NETの時刻加算・減算を完全ガイド!AddHours, AddMinutesで時間を操る
生徒
「先生、VB.NETを使って、今の時間から30分後や2時間後の時間を計算する方法はありますか?予定管理ソフトを作ってみたいんです!」
先生
「素晴らしい目標ですね!VB.NETには、時間を足したり引いたりするための専用の命令が用意されているんですよ。」
生徒
「時間を足すって、59分の次に1分足したら時間が繰り上がったりして難しそうですが、自分で計算式を書くんですか?」
先生
「そんなことはありません。パソコンが自動的に『分』を『時』に繰り上げてくれる仕組みがあるんです。初心者でも数行で書けるので、一緒に見ていきましょう!」
1. 時刻の加算・減算とは?
プログラミングにおける時刻の加算(かさん)とは、ある時間に「1時間」や「30分」といった時間をプラスして、未来の時間を算出することです。逆に減算(げんざん)は、時間をマイナスして過去の時間を求めることを指します。VB.NETというプログラミング言語を使えば、時計の針を自分で進めたり戻したりするような感覚で、正確に時間を操作することができます。
パソコンを触ったことがない方でもイメージしやすいように例えると、キッチンタイマーのようなものです。「あと3分」と設定すれば、今の時間から3分後を計算してくれます。プログラミングでは、これを「AddHours(時間を足す)」「AddMinutes(分を足す)」「AddSeconds(秒を足す)」といった命令を使って実現します。これらの命令を使いこなせば、正確な時間の管理ができるようになります。
2. AddHoursを使って「時」を足す方法
まずは、時間に「何時間」かを足す AddHours(アド・アワーズ) という命令を学びましょう。これは、海外との時差を計算したり、数時間後のスケジュールを表示したりする際に非常に便利です。使い方は、時間のデータが入っている箱(変数)に対して、この命令をくっつけるだけです。
ここで「変数(へんすう)」という言葉が出てきましたが、これはデータを一時的に入れておく「魔法の箱」のことだと思ってください。この箱には DateTime(データタイム)という名前の形があり、日付と時間の両方を覚えることができます。AddHoursを使うと、例えば夜の23時に2時間を足した場合、日付をまたいで翌日の深夜1時であることをパソコンが自動で判断してくれます。
' 今の時間を取得して、ako という名前の箱に入れます
Dim ima As DateTime = DateTime.Now
' 今の時間に 3時間を足して、mirai という箱に入れます
Dim mirai As DateTime = ima.AddHours(3)
' 結果を画面に表示します
Console.WriteLine("今の時間: " & ima.ToString("HH:mm"))
Console.WriteLine("3時間後: " & mirai.ToString("HH:mm"))
今の時間: 10:00
3時間後: 13:00
3. AddMinutesを使って「分」を操作する
日常生活で一番使うのが、この AddMinutes(アド・ミニッツ) かもしれません。「あと45分で会議が終わる」といった計算や、電車の到着予定時刻を出す際によく使われます。使い方は先ほどの時間と同じですが、カッコの中に足したい「分」の数字を入れます。
初心者が間違いやすいポイントとして、60分を足したときに時間が正しく繰り上がるか心配になることがありますが、心配無用です。VB.NETの内部では、時間が数学的に正しく繋がっているため、分が溢れたら自動的に時間(アワー)の部分を増やしてくれます。私たちはただ「何分足すか」だけを考えれば良いのです。
' 今の時間を準備
Dim kyo As DateTime = DateTime.Now
' 45分を足します
Dim schedule As DateTime = kyo.AddMinutes(45)
Console.WriteLine("開始時刻: " & kyo.ToString("HH時mm分"))
Console.WriteLine("終了予定: " & schedule.ToString("HH時mm分"))
開始時刻: 10:30
終了予定: 11:15
4. AddSecondsを使って「秒」単位の計算
さらに細かい単位である「秒」を扱うのが AddSeconds(アド・セカンズ) です。非常に精密な計算が必要なストップウォッチアプリや、一秒を争うようなゲーム、あるいはセキュリティ上の「あと60秒でパスワードが無効になります」といった通知機能などで活躍します。
プログラミングを始めたばかりのときは「秒まで使うことはないかな?」と思うかもしれませんが、実はコンピュータの世界では1秒未満の単位(ミリ秒など)まで細かく計算されています。この AddSeconds を使いこなすことで、より正確でプロフェッショナルなアプリケーションに一歩近づくことができます。
' 今の瞬間を取得
Dim shunkan As DateTime = DateTime.Now
' 90秒後(1分30秒後)を計算
Dim timeout As DateTime = shunkan.AddSeconds(90)
Console.WriteLine("今の秒: " & shunkan.ToString("ss"))
Console.WriteLine("90秒後の時間: " & timeout.ToString("HH:mm:ss"))
今の秒: 05
90秒後の時間: 10:31:35
5. 時間を引き算(減算)する方法
「時間を足す命令はあるけど、引く命令はどう書くの?」という疑問が湧きますよね。実はVB.NETには「SubtractHours」のような引き算専用の命令は一般的に使いません。代わりに、AddHoursやAddMinutesのカッコの中に マイナスの数字 を入れることで引き算を実現します。
例えば、1時間前を求めたいときは AddHours(-1) と書きます。30分前なら AddMinutes(-30) です。この「マイナスを足す」という考え方は、最初は少し変に感じるかもしれませんが、プログラミングの世界ではとても賢い方法です。一つの命令で未来(プラス)も過去(マイナス)も両方計算できるからです。
Dim genzai As DateTime = DateTime.Now
' マイナスを指定して1時間前の時間を求めます
Dim kako As DateTime = genzai.AddHours(-1)
' マイナスを指定して15分前の時間を求めます
Dim jugyoKaishi As DateTime = genzai.AddMinutes(-15)
Console.WriteLine("今は " & genzai.ToString("HH:mm") & " です")
Console.WriteLine("1時間前は " & kako.ToString("HH:mm") & " でした")
今は 10:00 です
1時間前は 09:00 でした
6. 日付をまたぐ計算のすごさ
これらの命令の真骨頂は、日付をまたぐ計算にあります。例えば、12月31日の23時50分に20分を足すとどうなるでしょうか。手作業で計算すると「分を足して、時間が繰り上がって、さらに日付が1月1日に変わって…」と非常に面倒です。しかし、VB.NETの AddMinutes を使えば、これらを一瞬で完璧に処理してくれます。
プログラミング未経験の方は、この「カレンダーのルールをパソコンが知っている」という点にぜひ驚いてください。うるう年の2月や、31日まである月と30日までしかない月の違いもすべて考慮されています。私たちがやるべきことは、どの単位(時・分・秒)をどれだけ動かしたいかを命令するだけなのです。
7. 時間操作をマスターしてアプリを便利に
時刻の加算・減算ができるようになると、ユーザーにとって非常に便利な機能を提供できるようになります。例えば、「お薬の通知を3時間おきに出す」とか「パスワードの有効期限を15分間に設定する」といった機能はすべて今回学んだ知識で作ることができます。
プログラミングは難しそうに見えますが、こうした一つ一つの便利な命令を覚えていく積み重ねです。最初は意味がわからなくても、実際に自分のパソコンで AddHours と打ち込んでみて、数字が変わるのを見るだけで大きな進歩です。今回学んだ「時間に魔法をかける方法」を使って、ぜひ自分だけの便利な時計アプリやタイマーを作ってみてくださいね!