11

ブラウザは、 を参照してドキュメントの最終更新日を判断する方法を提供しますdocument.lastModified。このプロパティは HTTPLast-Modifiedヘッダーから決定され、文字列として返されます。

私の目標は、このプロパティを JavascriptDateオブジェクトに変換することです。現在、私は使用しています

var date = new Date(document.lastModified);

文字列を正常に解析します。ただし、これがブラウザー間およびロケール間で機能するかどうかについては興味があります。

私にとって非常に興味深いのは、 はdocument.lastModified指定された HTTP ヘッダーと同じ日付を表しているLast-Modifiedが、文字列は同一ではないということです。ブラウザはヘッダーを解析し、Last-Modifiedそれを内部の日付表現に変換してから、それにdocument.lastModified基づいて文字列に設定するようです。この場合、document.lastModifiedJavascript コンストラクターによって解析できるようにフォーマットされている可能Date性があります。これは、両方が同じロケールとフォーマット ルールを使用している可能性が高いためです。しかし、これを確実に確認することはできませんでした。

4

6 に答える 6

3

できvar anotherDateObject = new Date(Date.parse(document.lastModified)); ません.javascriptが文字列を日付オブジェクトに解析しないという理由だけで、日付部分以外の区切り'/'文字が含まれるまで(時間部分は問題ありません)。は'-'empty space':'

<html>
<body>
<script>
    var dt = document.lastModified;    
    dt = dt.replace("/", " ");
    dt = dt.replace("/", " ");
    dt = dt.replace("-", " ");
    dt = dt.replace("-", " ");
    // '/' or '-' replcae these separtors with empty space
    // Now your string can be parsed to Date Object
    var anotherDateObject = new Date(Date.parse(dt));
    alert(anotherDateObject + " -- " + anotherDateObject.getHours());        
</script>
</body>
</html>
于 2012-11-16T04:49:22.500 に答える
2

HTML5 の仕様が確定するまでは、Webkit ベースのブラウザーについて特別なケースを提示する必要があると思います。

HTML5 ドラフトによるとdocument.lastModified、実装には非常に明確な要件があります。

lastModified 属性は、取得時に、Document のソース ファイルが最後に変更された日時を、ユーザーのローカル タイム ゾーンで次の形式で返す必要があります。

  1. 日付の月の部分。
  2. "/" (U+002F) 文字。
  3. 日付の日の部分。
  4. "/" (U+002F) 文字。
  5. 日付の年コンポーネント。
  6. U+0020 スペース文字。
  7. 時間の時間コンポーネント。
  8. ":" (U+003A) 文字。
  9. 時刻の分コンポーネント。
  10. ":" (U+003A) 文字。
  11. 時刻の秒コンポーネント。

つまり、"MM/DD/YYYY hh:mm:ss"ユーザーのローカル タイム ゾーンです。これは、同じ要件があれば、HTML5 が完成したときに Webkit が間違っていることを意味します。

また、変更日のソースは以下に準拠する必要があります。

ドキュメントのソース ファイルの最終変更日時は、使用されるネットワーク プロトコルの関連する機能 (ドキュメントの HTTP Last-Modified ヘッダーの値、またはローカル ファイルのファイル システムのメタデータなど) から取得する必要があります。最終変更日時が不明な場合、属性は現在の日時を上記の形式で返す必要があります。

今のところ、HTML4、XHTML、DOM 2、または DOM 3 について何も見つけることができないため、標準自体はすべてのブラウザーが好きなことを行うことができると思いdocument.lastModifiedます。それは HTML5 でのみ定義されていると思います。

誰もが標準に準拠すれば、たとえ 1 つのブラウザーが解析できなくても問題はなくなり"MM/DD/YYYY hh:mm:ss"ます。ECMAScript 標準で受け入れられている ISO 8601 にいつでも再構築できます。しかし、現在の主要なブラウザは、形式をローカル時間として正しく解析できると思います。これは、ECMAScript で期待されている標準でもあります。

于 2012-11-23T20:57:21.457 に答える
1

私が知る限り、現在使用されているすべての主要なブラウザーがこのプロパティをサポートしています。保存される値は、現地時間で の形式ですMM/dd/yyyy HH:mm:ss

このプロパティは、すべてのブラウザーとロケールで使用できると思います。

于 2012-11-16T03:46:21.573 に答える