SubtractDate関数(TKInfo.dll)(Ver5.78対応版)
 SubtractDate関数は、Date:ヘッダ中にあるような日付文字列を2つパラメータとして受け取って、それの差が何日になるのかを計算します。
 パラメータの指定によって、何日の差だけじゃなくて、何時間の差か、何分の差か、何秒の差かも計算出来ます。
パラメータ1、パラメータ2(文字列型)
 差を計算したい日付文字列をパラメータ1とパラメータ2に指定します。ここで指定出来る文字列の形式は、Date:ヘッダの中身に入っているような形式か、または「YYYY/MM/DD hh:mm」のような、GetMailTransmitDate関数の返す形式でもかまいません。

 返される値は、パラメータ1からパラメータ2を引き算した値となります。パラメータ1の方が大きい場合は正の数、パラメータ2の方が大きい場合は負の数となります。言い換えると、パラメータ1の方がパラメータ2よりも未来の場合は正の数となります。


パラメータ3(文字列型)
 パラメータ3を省略するか、または数値の0を指定すると、日単位での計算がなされます。この場合の計算方式としては、パラメータ1/パラメータ2に指定された文字列の表す「時」、「分」の指定は完全に無視されて、日付だけでの比較となります。例えばパラメータ1には1月2日の午前0時を指定して、パラメータ2には1月1日午後23時を指定したとすると、時間差的には1時間になりますが、日付の計算的には「1日」という結果になります。

 パラメータ3に"hour"を指定すると、何時間ずれてるかの値を返します。ここでの時間の計算は、いわゆる「切り捨て」での計算になります。例えば2時0分と1時1分の差を計算すると、0が返ります。
 パラメータ3に"minute"を指定すると、何分ずれてるかの値を返します。ここでの時間の計算も切り捨てでの計算になります。
 パラメータ3に"second"を指定すると、何秒ずれてるかの値を返します。ここでの時間の計算も切り捨てでの計算になります。パラメータ1とパラメータ2の時間差(というか、日付差)が極端に大きい場合は値がオーバーフローする可能性があります。こちらで簡単に計算した所だと、68年以上くらいずれた日付を比較するとオーバーフローするようです。


返り値(数値型)
 差の値を数値で返します。


$today = dllfuncstr("CurrentDate");
$date = dllfuncstr("GetMailTransmitDate");
#day = dllfunc("SubtractDate", $today, $date);
message "このメールは" + str(#day) + "日前に受信したメールです。";

戻る