2012-04-04 17 views
1

まず最初に、これを調べていただきありがとうございます。jsonで送信する前にunixタイムスタンプを変換する

私は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で送信する前に読み取り可能な日付に変換する方法はありますか?それとも後で?

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

+0

いずれかの回答が問題を解決しましたか? – dragon

答えて

2

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

alert(new Date(post.date)) 

注:あなたが整数ではなく文字列を転送しているので、それは、ペイロードをローに保持します

  1. :ので、それは、レンダリングされるまで、UNIXタイムスタンプ形式でそれをすべての方法を渡すのがベストです。
  2. これは、クライアント上で別の方法でタイムスタンプを使用することを可能にします。例えばDate.now()/1000 - post.dateは投稿が作成されてからの秒数を返します。
  3. UNIXタイムスタンプはタイムゾーンに依存しません。クライアントでレンダリングすると、ローカルのタイムゾーンとフォーマットになります。サーバー上でレンダリングすると、サーバーのタイムゾーンになり、サーバーのロケール設定が使用されます。
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オブジェクトで他のメソッドを使用して他の書式を取得することができます。使用方法


送信されたデータを減らし、あなたの文字列を解析することなく、より多くの柔軟性を与え、あなた次第ですが、竜が指摘するように、クライアント側のそれをやってすることは、それ以来、多くの場合、よりよいさの両方。

+0

私はその両方を最高の答えとして選びたいと思いますが、残念ながら私はできません!お返事いただきありがとうございます。これは私の問題を解決するのに役立ちました! :) – moonwalker

+1

心配はありません - 私は担当者が必要なようではありません。 :) – Amber

関連する問題