CurrentDateのテンプレートに関してNo.08690
TakahiPo さん 03/04/15 13:41
 
こんにちは。テンプレートに関して質問させて下さい。

現在日時の取得でCurrentDateがあると思いますが、
これに任意の数字を足した結果を出したいのですが、出来ますでしょうか?

たとえば、
CurrentDateで取得した日時が

2003/4/15 となっているところに1日プラスして

2003/4/16 として出したいのですが…。

#この場合テンプレートではなくてマクロになってしまいますか?

どなたかおわかりの方、お教え頂けますでしょうか?
よろしくお願い致します。

[ ]
RE:08690 CurrentDateのテンプレートに関No.08693
秀まるお さん 03/04/15 16:27
 
 テンプレートでもマクロでも、期待する動作をCurrentDate関数やFormatDate
関数を使って行うことは不可能です。

 何らかの計算関数を用意すれば可能になりますけど。例えばFormatDate関数に
第3パラメータを用意して、そこでプラスマイナスの日付なり時間なりを指定さ
せるとか…。

[ ]
RE:08693 CurrentDateのテンプレートに関No.08694
TakahiPo さん 03/04/15 16:46
 
秀まるおさん、ご返答ありがとうございます。

> テンプレートでもマクロでも、期待する動作をCurrentDate関数やFormatDate
>関数を使って行うことは不可能です。

そうでしたか。了解です。

毎週月曜に週報を出すのですが、サブジェクトに先週の月曜と金曜日の
日付を入れるので、テンプレートで出来たらなぁ、と思ってました。
#提出日の−7日とかで

> 何らかの計算関数を用意すれば可能になりますけど。例えばFormatDate関数に
>第3パラメータを用意して、そこでプラスマイナスの日付なり時間なりを指定さ
>せるとか…。

もしお時間があればで結構ですので、ご検討していただけると嬉しいです。

よろしくお願い致します。

[ ]
RE:08693 CurrentDateのテンプレートに関No.08695
たけのこ さん 03/04/15 16:50
 
たけのこです。

こんな感じでは? 何か勘違いしてますか?

/////
#after = 1;     // この数字分だけ進んだ日付になる

#days[ 1] = 31;
#days[ 2] = 28;
#days[ 3] = 31;
#days[ 4] = 30;
#days[ 5] = 31;
#days[ 6] = 30;
#days[ 7] = 31;
#days[ 8] = 31;
#days[ 9] = 30;
#days[10] = 31;
#days[11] = 30;
#days[12] = 31;

#y = val(year);
#m = val(month);
#d = val(day);
#d = #d + #after;

#days[2] = #days[2] + (#y % 4 == 0) - (#y % 100 == 0) + (#y % 400 == 0);

while(#d > #days[#m]){
  #d = #d - #days[#m];
  #m = #m + 1;
  if(#m > 12){
    #m = 1;
    #y = #y + 1;
    #days[2] = 28 + (#y % 4 == 0) - (#y % 100 == 0) + (#y % 400 == 0);
  }
}

insert str(#y) + "/" + str(#m) + "/" + str(#d) + "\n";
/////

(^^)/”

[ ]
RE:08693 CurrentDateのテンプレートに関No.08696
ひろ さん 03/04/15 16:51
 
 秀まるおさん今日は、ひろです。
>  何らかの計算関数を用意すれば可能になりますけど。例えばFormatDate関数に
> 第3パラメータを用意して、そこでプラスマイナスの日付なり時間なりを指定さ
> せるとか…。
 それはそれで役に立つかもしれませんが、
> CurrentDateで取得した日時が
>
> 2003/4/15 となっているところに1日プラスして
>
> 2003/4/16 として出したいのですが…。
の場合、日付の加算なので、大/小の月、閏年を考慮しなければいけないので、
単純な算術計算では済みません。

 他の MUA でテンプレートで算術計算できるというのも聞かないし、個人的
には、現状通り文字列の置換をするマクロを予め作成しておき、そのマクロを
テンプレートで ExecMacro 呼び出した方がややこしいことにならない気がし
ます。

[ ]
RE:08695 CurrentDateのテンプレートに関No.08697
たけのこ さん 03/04/15 16:58
 
たけのこです。

ああっ、戻りもあるならこんな感じ?

/////
#after = 366;

#days[ 1] = 31;
#days[ 2] = 28;
#days[ 3] = 31;
#days[ 4] = 30;
#days[ 5] = 31;
#days[ 6] = 30;
#days[ 7] = 31;
#days[ 8] = 31;
#days[ 9] = 30;
#days[10] = 31;
#days[11] = 30;
#days[12] = 31;

#y = val(year);
#m = val(month);
#d = val(day);
#d = #d + #after;

#days[2] = #days[2] + (#y % 4 == 0) - (#y % 100 == 0) + (#y % 400 == 0);

while((#d < 1) || (#d > #days[#m])){
  if(#d < 1){
    #m = #m - 1;
    if(#m < 1){
      #m = 12;
      #y = #y - 1;
      #days[2] = 28 + (#y % 4 == 0) - (#y % 100 == 0) + (#y % 400 == 0);
    }
    #d = #days[#m];
  }else{
    #d = #d - #days[#m];
    #m = #m + 1;
    if(#m > 12){
      #m = 1;
      #y = #y + 1;
      #days[2] = 28 + (#y % 4 == 0) - (#y % 100 == 0) + (#y % 400 == 0);
    }
  }
}

insert str(#y) + "/" + str(#m) + "/" + str(#d) + "\n";
/////

(^^)/”

[ ]
RE:08696 CurrentDateのテンプレートに関No.08698
秀まるお さん 03/04/15 16:58
 
 マクロで計算させるなら、例えばVisualBasic用に公開されている計算プログ
ラムを秀丸マクロに移植して、それで計算させるという手もあると思います。

 かなり面倒かとは思いますけど。

    http://www.geocities.co.jp/Technopolis/2061/vb/vb1.html

 あるいは、TKINFO.DLLとは別に日付計算関係のDLLを用意して、例えばテンプ
レートから、

 $(DATETIME.DLL:CalcDate,XXXX,XXXX)

 みたいに呼べるようにするなんて手もあるかもしれません。(今思いついただ
けですけど)

[ ]