ShiftDate関数(TKInfo.dll)(Ver6.50対応版)
 ShiftDate関数は、Date:ヘッダ中にあるような日付文字列から相対的な日付の計算をし、結果を、同じくDate:ヘッダにあるような形式の文字列で返します。
 パラメータの指定によって時間や分、秒の足し引きも出来ます。
パラメータ1(文字列型)
 変換したい日付文字列です。一般には返信メールや転送メールでの元メールの日付を指定することがほとんどだと思います。例えばテンプレートの場合なら、$(RootHeader,Date)を指定します。


パラメータ2(文字列型または数値型)
 数値型を指定する場合、シフトさせる日数を指定します。+1を指定すれば明日って意味になり、-1を指定すれば昨日って意味になります。ちなみに数値型で指定する場合、値の範囲は-65535〜65535までである必要がありまして、それを超える数値は指定出来ません。
 文字列型を指定する場合、"+1"や"1"や"-2"などの数値そのままの文字列を指定すると、その通りで計算します。ただし、"+1-2"のような計算式は指定できません。
 プラス記号は省略可能です。
 "月"などの曜日を指定すると、パラメータ1の属する週の中でのその曜日の日を計算します。例えば今日が1月3日の火曜日だとすると、"水"が指定されれば明日の1月4日という計算結果になります。

 日付の「+1」や「-1」等の数値の後ろにピリオド区切りで時間を指定することも出来ます。さらにはその後ろにピリオド区切りで分も指定できます。例えば2時間後を計算したい場合は"+0.2"を指定し、30分前ならば、"-0.0.30"と指定すればいいです。(V4.72から)
 分のさらに後ろにピリオドを付けて数字を指定すると、秒の計算も出来ます(V6.10β29から)。例えば"+0.0.0.10"と指定すると、10秒プラス、"-0.0.0.100"とすると、100秒マイナスします。


返り値(文字列型)
 変換された日時文字列です。

 計算した日時がWindowsのサポートする範囲外(たとえは1601年よりも前)になるとエラーメッセージが表示され、返り値は""となります。ただし、あまりにも極端に日時が狂ってると、うまくエラーが検出出来ないででたらめな日時が返る可能性もあります。


補足:秀丸エディタから呼び出して使う件について
 この関数は、秀丸エディタのマクロからtkinfo.dllをロードして呼び出しても使えますが、使えるのは秀丸メールV6.10β27以上からになります。秀丸メールのバージョンが古いとうまく動きません。


$date = dllfuncstr("CurrentDate");
$date = dllfuncstr("ShiftDate", $date, "-7");    // 一週間前。
$date = dllfuncstr("ShiftDate", $date, "月");    // 今週の月曜日。
$date = dllfuncstr("ShiftDate", $date, "+0.2.30");    // 2時間30分後

戻る