어떻게 날짜를 조작하여 "지금 막"으로 표시 할 수 있습니까? "5 분 전"... "3 시간 전"... "2010 년 6 월 22 일 1:45 pm"과 비슷한 방식으로 어떻게 각 질문에 대한 답변/코멘트 옆에 날짜가 표시됩니까?크로스 - 브라우저 간 상대 날짜를 표시하는 방법은 무엇입니까?
문제가 더 복잡해지기 때문에 데이터베이스에 저장된 날짜는 GMT 시간 (괜찮습니다)이지만 각 사용자의 브라우저 시간대에 나타나기를 원합니다.
나는 이미 John Resig의 예쁜 날짜 플러그인 인 http://bassistance.de/jquery-plugins/jquery-plugin-prettydate/을 시험해 보았고 데이터베이스의 GMT 시간에서 오프셋 된 시간대를 뺄 수 있도록 편집했습니다. 그러나이 솔루션은 FireFox에서만 작동합니다.
는 여기 오프셋 시간대를 추가 한 후 'prettydate'기능이다 :
format : function(time) {
var date = new Date(time);
var currentDate = new Date();
var timezoneOffsetInMilliseconds = currentDate.getTimezoneOffset() * 60000;
var currentTimeInMillisecondsUtc = currentDate.getTime();
var givenTimeInMillisecondsUtc = date.getTime()- timezoneOffsetInMilliseconds;
var diffInSeconds = ((currentTimeInMillisecondsUtc - givenTimeInMillisecondsUtc)/1000);
var day_diff = Math.floor(diffInSeconds/86400);
if (isNaN(day_diff) || day_diff < 0)
return;
// If longer than a month, calculate the date w/ timezone offset
if (day_diff >= 31)
return new Date(givenTimeInMillisecondsUtc).toLocaleString();
var messages = $.prettyDate.messages;
return day_diff == 0 && (diffInSeconds < 60 && messages.now
|| diffInSeconds < 120 && messages.minute
|| diffInSeconds < 3600
&& messages.minutes(Math.floor(diffInSeconds/60))
|| diffInSeconds < 7200 && messages.hour || diffInSeconds < 86400
&& messages.hours(Math.floor(diffInSeconds/3600)))
|| day_diff == 1 && messages.yesterday || day_diff < 7
&& messages.days(day_diff) || day_diff < 31
&& messages.weeks(Math.ceil(day_diff/7));
}
편집 : 나는 (구글 웹 애플리케이션을 통해) 장고 템플릿을 사용하여 파이썬을 사용하고 , 그리고 '시간'개체 I 그래서 같은 ISO 형식 ') db.DateTimeProperty ('A 전달 해요 '
<span class="prettyDate" title='{{ q.date.isoformat }}'>{{q.date.isoformat}}</span>
일상적으로 날짜를 사용한 사람의 질문 : setUTC *() 메서드를 사용하여 날짜를 설정할 수 없습니까? 자동으로 현지 시간으로 변환되지 않습니까? – brainjam
고마워, 그 일을 시도 할 수있어. 그러나 여전히 크로스 브라우저 부분에는 도움이되지 않습니다. 실제로는 더 큰 문제입니다. – Cuga