UNIXタイムとは?
UNIXタイムというのは、コンピュータの世界で時間を数える一つの方法です。普段私たちは日時を年月日や時分秒で考えますが、コンピュータはそれをただの一連の数字、つまり「秒数」として扱います。UNIXタイムは1970年1月1日の真夜中(世界協定時刻)からの総秒数で、この瞬間を「エポック」と呼びます。
これにより、どの時間帯や日付でも世界中どこでも同じ瞬間を一つの数字で示すことができるようになっています
たとえば、2021年の10月1日00:00:00 UTCという日時は、
UNIXタイムに変換すると、1633036800となります。
UNIXタイムは特にプログラミングでよく使われ、時間を管理するための単純で一貫した方法として役立っています。
UNIXタイムを使うことの利点
UNIXタイムを使うことの利点は、異なる時間帯や日付形式に関わらず、世界中のコンピュータが共通の言語で時間を理解できることです。
また、UNIXタイムは日付と時間の計算を非常にシンプルにするので、プログラマがさまざまな日時関連の問題を解決するのを助けます。
例えば、あるイベントが何秒続いたか、またはある日時からどれくらい経ったかを計算する時などに役立ちます。
UNIXタイムが抱える問題点
UNIXタイムは2038年問題として知られる制約に直面しています。
これはUNIXタイムが格納される数字が32ビットの整数であり、2038年1月19日を過ぎるとオーバーフローを起こしてしまう問題です。
これにより、システムが正しく日時を処理できなくなる可能性がありますが、現代では多くのシステムがこの問題を回避するための更新を行っています。
全体として、UNIXタイムはプログラミングやデータ管理において非常に実用的で、世界中のシステム間で時刻を共有するための効率的な手段です。
MQL5におけるUNIXタイムの扱い
MQL5や他の多くのプログラミング言語では、このUNIXタイムを利用して日時を計算したり、フォーマットを変更する関数が用意されています。これによって、プログラマはUNIXタイムをより扱いやすい日時の形式に変換したり、逆に日時をUNIXタイムに変換したりすることができます。
MQL5ではTimeToString関数という関数が用意されており、TimeToString関数によってUNIXタイムを人間が読める形式に変換することも可能です。
void OnStart()
{
// UNIXタイムを格納する変数
datetime unix_time = 1633036800; // 2021年10月1日の00:00:00 UTCに対応するUNIXタイム
// UNIXタイムを日時の文字列に変換
string date_str = TimeToString(unix_time, TIME_DATE|TIME_MINUTES);
// 変換された日時の文字列を出力
Print("変換された日時: ", date_str);
}
このコードは、UNIXタイムの値(1633036800)を取って、それをdatetime型の変数unix_time
に代入しています。
そして、TimeToString関数を使ってこのUNIXタイムを「YYYY.MM.DD HH:MI」形式の日時の文字列に変換し、変数[date_str
]に格納しています
。最後に、この文字列をログ出力して結果を確認します。
TimeToString関数の第二引数であるTIME_DATE|TIME_MINUTES
は、変換する際のフォーマットを指定しており、年月日と時分を含む形式で出力することを意味します。
このサンプルコードをMQL5で実行すると、MetaTrader5のログに変換された日時が表示されます。
<参照>
タイムスタンプ/TimeToString関数/iTime関数/StringToTime関数/datetime型/TimeCurrent関数
————————————————————————————–
※当サイトでは、プログラミング経験ゼロの方でも、プログラミングの基礎から学べる
をメインコンテンツとして展開しています。
第0回から、順を追って勉強していけばプログラミングの経験がなくてもMQL5を使って、MT5用のEAが作れるように書いています。最初は難しいと感じるかもしれませんが、繰り返し勉強していく事で自然とスキルが身についていくはずです。興味ある方は是非ご覧ください。
コメント