2010-09-20 50 views
3

我目前使用django並輸出從UNIX時代以秒爲單位的日期。我如何在unix時代使用jquery?jquery時間以前與unix時代

我看到這個例子: 2015年1月10日

<abbr class="timeago" title="2015-01-10T15:00:00Z">January 10, 2015</abbr> 

,但我可以這樣做:

<abbr class="timeago" title="2015-01-10T15:00:00Z">{{UNIX_EPOCH_IN_SECONDS}}</abbr> 

謝謝!

+2

我不明白這是什麼都有用jQuery做。你在尋找客戶端方法(JavaScript)還是服務器端方法(Python)? – 2010-09-21 00:00:29

回答

1

可以初始化與UNIX時間戳的Date對象,但JavaScript的日期預計在毫秒的時間,所以它只是:

var d = new Date(<?php echo date('U') ?>000); 

它變成是這樣的:

var d = new Date(1285027311000); 

它會也解析大多數標準的文本日期格式,必須像PHP的strtotime()一樣,儘管你將不得不測試它是如何寬容的。

+0

也許我錯過了你的觀點,但問題是關於jQuery和Django? – 2010-09-21 00:09:47

2

Date()構造函數可以使用自1970年1月1日00:00:00以來的毫秒數,timeago可以與Date對象一起使用。所以:

jQuery.timeago(new Date(unixSeconds * 1000)); 

應該工作。

4

您不需要將您的unix時間戳轉換爲ISO。哈爾發佈了一段代碼,修改了jQuery的timeago plugin,這對我很有幫助。只需在89線與本替換TIMEAGO的parse()函數:

parse: function(iso8601) { 
    if ((iso8601 - 0) == iso8601 && iso8601.length > 0) { // Checks if iso8601 is a unix timestamp 
    var s = new Date(iso8601); 
    if (isNaN(s.getTime())) { // Checks if iso8601 is formatted in milliseconds 
     var s = new Date(iso8601 * 1000); //if not, add milliseconds 
    } 
    return s; 
    } 

    var s = $.trim(iso8601); 
    s = s.replace(/-/,"/").replace(/-/,"/"); 
    s = s.replace(/T/," ").replace(/Z/," UTC"); 
    s = s.replace(/([\+-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400 
    return new Date(s); 
}, 

jQuery Time ago from a timestamp?

+0

謝謝,正是我需要的! – 2012-02-14 14:30:49