秀丸のサマータイムNo.08274
サカタ@Van さん 01/04/05 18:16
 

  ■□ カナダのサカタと申します

  カナダは先日1日にサマータイムになったのですが、以来『insert
 time;』で1時間ずれた数値が入力されてしまい、困っています。01:05
 に『insert time;』を実行すると、00:05 と出てしまうのです。ほかの
 アプリケーション(Wordpad など)ではこの異変は起こりません。

  システムの時間は Win が4月1日に自動的にサマータイムに調整し
 ています。autoexec.bat で『set TZ=PST8PDT』(北米太平洋側時間)
 を指定してもしなくても症状は同じです。日本製のプログラムにとって
 はサマータイムというのはなかなか厄介なようで、前にもこれで日付が
 狂うアプリケーションのバグが見つかっているのですが(※)、これも
 秀丸のバグなんでしょうか?

 (※)そのアプリケーションでは『set TZ=PST8PDT』とすると、日付
        が1日狂うようになっており、修正していただいた。
 ┌───┐
 │サカタ│
 └───┘

[ ]
RE:08274 秀丸のサマータイムNo.08276
山紫水明 さん 01/04/05 20:44
 
 サカタ@Vanさん,こんばんは。

》  カナダは先日1日にサマータイムになったのですが、以来『insert
》 time;』で1時間ずれた数値が入力されてしまい、困っています。01:05
》 に『insert time;』を実行すると、00:05 と出てしまうのです。

 秀丸のバグかどうかは,秀丸担当さんの方からコメントしていただくとして,さ
しあたりの対策としては,次のようなマクロでしのげるかもしれませんがいかがで
しょう。
 今の時間でしか確認していませんので,0時を過ぎたら・・・?
 おかしかったら適当に手直ししてください。
//------------------------------------------//
$hour = str( val(hour) + 1 );
if( val(hour) < 10) $hour = "0" + $hour;
if( $hour == "24" ) $hour = "00";
insert $hour + ":" + minute;
endmacro;
//-----------------------------------------//

 何か外しているのかな?

     では, (^^)/~
                                        山紫水明

[ ]
RE:08274 秀丸のサマータイムNo.08277
ひろ さん 01/04/06 01:30
 
 サカタさん今日は、ひろです。
>   カナダは先日1日にサマータイムになったのですが、以来『insert
>  time;』で1時間ずれた数値が入力されてしまい、困っています。01:05
 秀丸の時刻関係のコマンドはシステムのタイムクロックを使っているのに
何故でしょう? ひょっとして、Windows ということで、ハードウェアクロッ
クを使っているのかな?

>  秀丸のバグなんでしょうか?
かどうかは解りませんが、取り敢えず時間の変更だけなら比較的簡単です。
//-------------------------------------------------------------------
call SummuerTime;
refreshdatetime;
$$time = $$return + ":" + minute + ":" + second;
insert $$time;
endmacro;

SummuerTime:
  ##month = val(month);
  if(##month >= 4 && ##month <= 9)##1 = ##1 + 1;
  ##1 = ##1 % 24;
  if(##1 < 10)$$hour = "0" + str(##1);
  else $$hour = str(##1);
  return $$hour;
//-------------------------------------------------------------------
という形で如何でしょうか?

[ ]
RE:08277 秀丸のサマータイムNo.08279
TAKA さん 01/04/06 09:22
 
TAKA です。

>call SummuerTime;

call SummuerTime val( hour );
でないと、意図した通りには動きません。

[ ]
RE:08279 秀丸のサマータイムNo.08285
ひろ さん 01/04/06 12:09
 
 TAKA さん今日は、ひろです。
> call SummuerTime val( hour );
> でないと、意図した通りには動きません。
 仰る通りです(^^;。

[ ]
RE:08285 秀丸のサマータイムNo.08286
サカタ@Van さん 01/04/06 16:12
 

  ■□ カナダのサカタです

  すべてのサジェスチョンをトライしてみました。

=======================
●22:24 に実行して、
=======================
insert time     21:24:34
山紫水明さん    23:24
ひろ&TAKAさん  23:24:45

  と、どうも 22 時になってくれません。両方とも1時間進んだ値が出
 てしまいました。そこで山紫水明さんの案を

   $hour = str( val(hour) + 1 );
→ $hour = str( val(hour));

  と変えてみると、見事 22:24 が出ました。あれれ。ひろ&TAKA さん
 のでも同じ、『+ 1』部分を削ると正しい時間が出ます。ということは、
 insert time だとおかしくて、hour だと正しくなるわけですね。理由
 がわからない〜 ^_^;。

  とりあえず原因がわかって対策が行えるまでは、夏時間を自動で判断
 してくれるルーチンの美しさに惹かれ、ひろ&TAKA さんのマクロを使
 わせていただきます。ありがとうございました、山紫さん、ひろさん&
 TAKA さん :-)。
 ┌───┐
 │サカタ│
 └───┘

[ ]
RE:08286 秀丸のサマータイムNo.08289
秀丸担当 さん 01/04/06 16:51
 
>&nbsp;insert time だとおかしくて、hour だと正しくなるわけですね。理由
>&nbsp;がわからない〜 ^_^;。

調べたところ、原因はtimeとhourの違いで、秀丸のバグでした。
直しておきます。

詳しく言うと timeはWin3.1からの名残りで、localtime()という
ランタイムライブラリを使っていて、しかもサマータイムを無視
するというバグがあったためです。
後から要望により追加したhourは標準的なAPIを使っているので
正しいようです。

[ ]
RE:08286 秀丸のサマータイムNo.08290
ひろ さん 01/04/06 17:37
 
 サカタさん今日は、ひろです。
>  insert time だとおかしくて、hour だと正しくなるわけですね。理由
ということは、面倒なことはせず、
insert hour + ":" + minute + ":" + second;
とすれば良いだけですね(^^)。

[ ]
RE:08289 秀丸のサマータイムNo.08294
サカタ@Van さん 01/04/07 14:01
 

  ■□ カナダのサカタです

// 秀丸担当-san wrote (on 04/05) //
> 調べたところ、原因はtimeとhourの違いで、秀丸のバグでした。
> 直しておきます。

  そうでしたか、よろしくお願いします。time はいろんなマクロに使
 われているようですから、サマータイム対応にしていただけると助かり
 ます。

[ ]