ごとけんです

ruby 1.1b9_16(98/04/28) [sparc-sunos4.1.4] ですが
Time.gm の挙動がおかしい様な気がします。

1. 環境変数 TZ が "JST" のとき

  % ruby -e 'p Time.gm(1970)'
  Thu Jan 01 00:00:00 JST 1970

2. 環境変数 TZ がないとき

  % ruby -e 'p Time.gm(1970)'
  Thu Jan 01 09:00:00 JST 1970

TZ が "JST" のときの値はおかしいのではないでしょうか? 
# 個人的には Time.gm まで zone がデフォルトの
# ローカルになるのも気持悪いです

で、うちの gmtime(3) がおかしいのかと不安になり以下のような
テストをして見ましたが問題無さそうです:

  % cat timetest.c
  #include <time.h>
  main()
  {
    time_t t = 0;
    char *buf;
    buf = (char *)malloc(sizeof(char)*80);

    strftime(buf,80,"%a %h %d %T %Z %Y",gmtime(&t));
    printf("%s\n",buf);
  }

  % gcc -o timetest timetest.c 

  % setenv TZ JST; ./timetest
  Thu Jan 01 00:00:00 GMT 1970
  
  % unsetenv TZ;   ./timetest
  Thu Jan 01 00:00:00 GMT 1970


# 腕が足りないのでパッチまでは書けませんでした (- -; 

-- gotoken