これは、html と shtml (サーバーで解析) の両方の Web ページの最終更新日時を表示するためのソリューションです。また、php-solution も含めます。html と shtml から始めましょう。ほとんどのサーバーでは、html はサーバーで解析されないため、ページが送信されると、送信には Last-Modified 変数が含まれます。ただし、shtml などのサーバーで解析されるページの場合、その変数は送信されません。代わりに、ページの設計者は SSI ステートメントを使用して、ページが送信される前にサーバーによって処理される Last-Modified 情報を提供することになっています。
Javascript をサポートするストレート html として、または SSI がサポートする shtml として、いずれかの方法でページを処理する方法を次に示します。
<p>Last modified:
<!--#config timefmt="%m/%d/%Y %T" --><!--#echo var="LAST_MODIFIED" -->
<script type="text/javascript" language="JavaScript">
<!--
if(Last-Modified !== undefined)
{
document.write(document.lastModified)
}
//-->
</script></p>
無条件に「Last modified:」の文字列が出力されます。次に、サーバーで解析される場合、コメントは #config timefmt と #echo SSI ステートメントを使用して日付/時刻を提供します。ただし、これがサーバーで解析されない場合は、単なるコメントのままです。一方、サーバー解析の場合、Last-Modified として知られる変数は送信されないため、Javascript は Last-Modified が未定義かどうかをテストし、それが定義されている場合にのみ何かを実行しますが、これはサーバー解析用ではありません。注意: コメントでは、!-- の後に空白を残さないでください。また、--> の前に空白を残してください。
反対に、サーバーで解析されていない、ストレートな html です。SSI ステートメントは実行されないため、コメントはコメントのままです。しかし、Last-Modified が定義されているため、Javescript が動作を開始し、document.write を実行して document.lastModified 値を提供します。
フォーマットをいじることはできますが、上に示したのは基本的なコードです。
Last-Modified !== undefined のテストが機能しない場合は、より長い方法を使用できます。
<p>Last modified:
<!--#config timefmt="%m-%d-%Y %T" --><!--#echo var="LAST_MODIFIED" -->
<script language="JavaScript">
<!--
var mydate=new Date();
var year=mydate.getFullYear();
var month=mydate.getMonth()+1;
var day=mydate.getDate();
var hours=mydate.getHours();
var minutes=mydate.getMinutes();
var now='';
var testnow='';
var testlast=document.lastModified;
if (month<10) month="0"+month;
if (day<10) day="0"+day;
if (hours<10) hours="0"+hours;
if (minutes<10) minutes="0"+minutes;
now=(month + '/' + day + '/' + year + ' ' + hours + ':' + minutes + ':');
testnow=(now.substring(6,10)+now.substring(0,16));
testlast=(testlast.substring(6,10)+testlast.substring(0,16));
if (testlast && (testlast < testnow))
{ document.write(" "+document.lastModified); }
//-->
</script></p>
このメソッドは、現在の日付と document.lastModified の切り詰められたバージョンを比較します。両方の数量の形式は同一である必要があり、部分文字列関数は「秒」を削除します。document.lastModified が存在しない場合にほとんどのブラウザーが行うことは、現在の日付を置き換えることです。
PHPソリューションの場合:
<p>Last modified:
<?php
date_default_timezone_set('America/Los_Angeles');
echo " " . date ("m/d/y.", filemtime(__FILE__));
?>
</p>
ここでもフォーマットを調整できます。実際、サーバーの場所のタイムゾーンを設定したい場合があります。「サポートされているタイムゾーンのphpリスト」をWeb検索します。