2012-04-04 2 views
1

먼저이 문제를 조사해 주셔서 감사합니다.json에서 보내기 전에 유닉스 타임 스탬프를 변환하십시오.

나는 유닉스 타임 스탬프로 내 데이터베이스에 날짜를 저장하고 내가 사용하는 모든 정보를 얻을 때 : 나는 다음을 사용하여 얻을 때

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

날짜는 유닉스 타임 스탬프로 볼 수 있습니다 :

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

JSON에서 전송하기 전에 읽을 수있는 날짜로 변환 할 수 있습니까? 아니면 나중에?

도움을 주셔서 감사합니다.

+0

두 가지 대답으로 문제가 해결 되었습니까? – dragon

답변

2

JavaScript의 Date 개체를 사용하십시오. 그것은 페이로드가 낮은 유지

  1. 당신이 정수가 아닌 문자열을 전송하고 이후 :

    alert(new Date(post.date)) 
    

    참고 : 때문에, 렌더링까지 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'는 단순한 기본되었다.)


자바 스크립트 측에서

, 당신은 이런 식으로 그것을 할 수 :

new Date(post.date); 

문자열로 렌더링 될 때 기본 날짜 형식으로 서식을 지정하거나 Date 개체의 다른 메서드를 사용하여 다른 형식을 가져올 수 있습니다. 사용 방법


은 당신에게 달려 있지만, 용의 지적대로 모두 데이터가 전송 줄이고 문자열을 구문 분석 할 필요없이 당신에게 더 많은 유연성을 제공하기 때문에, 그것을 클라이언트 측을하고 종종 좋네요.

+0

둘 다 가장 적합한 답으로 선택하고 싶지만 불행히도 그럴 수 없습니다! 귀하의 답변에 모두 감사드립니다. 이것은 내 문제를 해결하는 데 도움이되었습니다! :) – moonwalker

+1

걱정할 필요가 없습니다. 담당자가 필요하지는 않습니다. :) – Amber

관련 문제