1

まず、これを調査するために時間を割いていただきありがとうございます。

日付をUNIXタイムスタンプとしてデータベースに保存し、次を使用してすべての情報を取得したとき。

        while($row = mysql_fetch_assoc($result)) {
        $posts[] = $row;
    }
    /* return the posts in the JSON format */
    return json_encode($posts);

日付は、次を使用して取得しようとすると、UNIXタイムスタンプとしてのみ使用できます。

var postHandler = function(postsJSON) {
 $.each(postsJSON,function(i,post) {
alert(post.date);
}
}

JSONで送信する前に読み取り可能な日付に変換する方法はありますか?それともその後?

どうもありがとうございました。

4

2 に答える 2

2

確かに、PHP側からは、次のように実行できます。

while($row = mysql_fetch_assoc($result)) {
    $row['your_date_field'] = date('r', $row['your_date_field']);
    $posts[] = $row;
}

(渡されるフォーマット文字列は自由にカスタマイズできdate()ます'r'。これは単純なデフォルトでした。)


Javascript側からは、次のように実行できます。

new Date(post.date);

文字列にレンダリングすると、デフォルトの日付形式としてフォーマットされます。または、Dateオブジェクトで他のメソッドを使用して他のフォーマットを取得できます。


どちらの方法を使用するかはあなた次第ですが、ドラゴンが指摘するように、クライアント側で行う方が、送信されるデータを減らし、文字列を解析することなく柔軟性を高めることができるため、多くの場合、より優れています。

于 2012-04-04T23:02:11.557 に答える
2

JavaScriptでDateオブジェクトを使用します。

alert(new Date(post.date))

注:次の理由により、レンダリングされるまでUNIXタイムスタンプ形式で渡すのが最善です。

  1. 文字列ではなく整数を転送するため、ペイロードを低く抑えることができます。
  2. これにより、タイムスタンプを再度解析しなくても、クライアントでさまざまな方法でタイムスタンプを使用できます。たとえばDate.now()/1000 - post.date、投稿が作成されてからの秒数などが表示されます。
  3. UNIXタイムスタンプは、タイムゾーンに依存しません。クライアントでレンダリングすると、ローカルのタイムゾーンと形式になります。サーバー上でレンダリングすると、サーバーのタイムゾーンになり、サーバーのロケール設定を使用します。
于 2012-04-04T23:02:38.453 に答える