ファイルの日付比較用文字列

[上に] [前に] [次に]
omi 1998/11/30(月) 16:44:47
一般にホームページは、必要なファイルをダウンロードしておいて、オフラインで見ると
サーバにアクセスしない分、ブラウザの動きが早くなります。
そこで、
閲覧が予想されるファイルを自動でダウンロードする機能に、
先回、行った日時を Cookie に保存しておいて cgi に渡せば、
更新したファイルだけをロードするのでスマートになります。
特にラウンジはたくさんのファイルがあるので選別したくなります。

その日時を得る方法を、おたずねしたいのです。 あー疲れた。

以下が考えたコードですが、どうもスマートでないし、
2000 年の年始に、真っ青(@_@)になる気がします。
もっと簡単な日時文字列を得る関数はないんでしょうか?。
よろしく、お願いします。


nd = new Date();
y = nd.getYear(); if (y<50){ y +=2000;} else if (y<1950){ y+=1900;}
time = y+t2(nd.getMonth()+1)+t2(nd.getDate())+t2(nd.getHours())+t2(nd.getMinutes());
setCookie('preLoadlastTime', time );
function t2 ( a ){ return((a>9)? String(a) : '0'+String(a)) ;}

( $s, $min, $hour, $mday, $mon, $year, $w, $a, $b )= localtime((stat(IN))[9]);
if ( $year < $year50 ) { $year +=2000;} else { $year +=1900;}
$dt = sprintf ("%d%02d%02d%02d%02d", $year,$mon+1,$mday,$hour,$min );

Tiot 1998/11/30(月) 17:59:53
クッキーはよく分からないので、その部分はとばして、時間を求める部分だけ。
> y = nd.getYear(); if (y<50){ y +=2000;} else if (y<1950){ y+=1900;}
これは、
y = nd.getYear(); if (y < 1900) {y += 1900;}
じゃないとまずいんじゃないかな?perlの方も。
たしか、2000年以降が4桁表示で、それ以前が2桁表示だとおもったので(まちがってたら、ごめんなさい)。

単に、更新日時を比較するだけならば、
1970年1月1日0時0分0秒(GMT)からの秒数(ミリ秒単位)を比較した方が簡単。

*JavaScript cf.)http://www.tohoho-web.com/js/date.htm
nd = new Date();
time = nd.getTime();

*perl cf.)http://www.tohoho-web.com/wwwperl2.htm#stat
$time = (stat("FILE"))[9];

これで単純に大小を比較すればよいかと。
ちょっと自信がないので、もし間違ってたらどなたか突っ込んで下さい。
(とくに、perlの方がふにゃふにゃかも)

omi 1998/11/30(月) 22:34:38
確かに (y<1950) には意味がありませんね。

私の JPerl.exe(98/01/06 23:52)は、2001年のファイルの $yearを、
101 で返してきました。
だから、単に $year += 1900; で良いんでしょうね。

ファイルの日付比較は、stat("FILE"))[9]; に000を付けて
nd.getTime(); と比較すれば十分だったですね。

これが、2000年問題かぁ、クリアできるかなー、と思っていたのですが、
丸一日費やしたのにそれ以前の問題だったんですね。
Tiotさん、ありがとうございました。

omi 1998/11/30(月) 22:35:20
[[解決]]
忘れてた

[上に] [前に] [次に]