[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: No encode-time() in ふる〜〜い Emacs



From: Katsumi Yamaoka <yamaoka@jpl.org> さん曰く
Subject: [emacs-w3m:00512] Re: No encode-time() in ふる〜〜い Emacs
Message-ID: <yosu1yqyti33.fsf@jpl.org.We.hate.spammers>
Date: 12 Apr 2001 21:31:43 +0900

白井> で、もう少し凝ったことをしようと思い、encode-time() や
白井> decode-time() の実験をしたところ、Emacs-19.28 はこれらを持っ
白井> ていないのでした。APEL も定義していないようだし。

白井> # 19.29 からみたいですね、このへん。

山岡さん> ;; 20世紀に、ある特定のマシンで作った Mule 19.34 で、encode-time
山岡さん> ;; が返す値が変なのがあります。
山岡さん> ;;
山岡さん> ;;(equal (encode-time 0 0 0 1 1 2001 0)
山岡さん> ;;       (encode-time 0 0 0 1 1 2001 43200))
山岡さん> ;; => t
山岡さん> ;;
山岡さん> ;; こういうのの対策も考慮しないといけないかもしれませんね。

43200 = 12 時間ですよね。しかし、山岡さん、よくこんなことご存じ
ですね。みょうに感動です。
  
## 20世紀のことは全部(Mew のように?)忘れてしまいましょうか。^^;;;

白井> decode-time() をつくるのはできると思うのですが、

山岡さん> ;; う〜ん、要は 1970 年から始まるカレンダー全部、とまでは行かな
山岡さん> ;; くても、まじめに leap を計算することになるんでしょうか?

## 全然まじめに考えるつもりはないのですが、こんなのじゃだめです
## か?

;; 日本国民だし夏時間はなし!!
(defun w3m-decode-time (&optional time)
  "Return (SECONDS MINUTES HOUR DAY MONTH YEAR DOW DST ZONE) like decode-time()."
  (let ((tf (format-time-string "%S %M %H %d %m %Y %w" time))
	     (tz (car (current-time-zone time))))
	 (setq tf (mapcar 'string-to-int (split-string tf " ")))
	 (append tf (list nil tz))))

## 夏時間は (cdr (current-time-zone)) を解析すればわかるのかしら
## ん?

白井> すでに w3m.el で使われている encode-time() って作るの結構難
白井> しかしら?よくわかんない。

山岡さん> ;; GNU touch があるものとして、

;; cygwin 上のならあったのですが、1980年以降しか対応していないみ
;; たいです。Windows ってそんなもんだったかな?

山岡さん> ;;(progn
山岡さん> ;;  (call-process "touch" nil nil nil
山岡さん> ;;                "-amt" "123112341970.56"
山岡さん> ;;                "/tmp/hoge")
山岡さん> ;;  (prog1
山岡さん> ;;      (nth 5 (file-attributes "/tmp/hoge"))
山岡さん> ;;    (delete-file "/tmp/hoge")))
山岡さん> ;; => (480 5216)
山岡さん> ;;
山岡さん> ;; これを最近の Emacs で確認すると、
山岡さん> ;;
山岡さん> ;;(decode-time '(480 5216))
山岡さん> ;; => (56 34 12 31 12 1970 4 nil 32400)

#### なんか、昔、MS-DOS とかで使っていた RAM Disk とかあればいい
#### ですね。UNIX で /tmp に使っている速い file system なら大丈
#### 夫かしらん。(などとまじめに反応したりして ^^;;;)

山岡さん> ;; 行頭の ";;" がぜったい必要な内容でした。ごめんなさい。_o_

そういえば、以前土屋さんが、elisp で mod time を設定したい、
っておっしゃっていましたが、外部コマンド使うぐらいしか手は無いの
かしら?始終使うところじゃないから十分かも。

-- 
白井秀行 (mailto:shirai@rdmg.mgcs.mei.co.jp)