2010-09-20 12 views
3

J'utilise django actuellement et la sortie de la date en secondes à partir de l'époque unix. Comment utiliser jquery il y a longtemps avec l'époque unix?jquery il y a un temps avec unix époque

Je vois cet exemple: 10 Janvier,

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

mais que je peux faire quelque chose comme:

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

Merci!

+2

Je ne vois pas ce que cela a à voir avec jQuery. Êtes-vous à la recherche d'une méthode côté client (JavaScript) ou d'une méthode côté serveur (Python)? –

Répondre

1

Vous pouvez initialiser un objet Date avec un horodatage unix, mais la date de Javascript attend en millisecondes, il est donc simplement:

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

qui se transforme en quelque chose comme:

var d = new Date(1285027311000); 

Ça va aussi analyser la plupart des formats de date textuels standard, doit être comme strtotime() de PHP, bien que vous deviez tester exactement comment il est pardonner.

+0

Peut-être que j'ai manqué votre point mais la question portait sur jQuery et django? –

2

Le constructeur Date() peut prendre le nombre de millisecondes depuis 00:00:00 UTC 1/1/1970, et timeago peut être utilisé avec un objet Date. Donc:

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

Devrait fonctionner.

4

Vous n'avez pas besoin de convertir votre horodatage unix en ISO. Hal a posté un morceau de code modifiant le timeago plugin de jQuery qui a fonctionné pour moi. Il suffit de remplacer la fonction parse timeago() à la ligne 89 avec ceci:

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

Merci, juste ce dont j'avais besoin! –

Questions connexes