jQuery时间转换为Unix时间戳

5

我目前正在使用django,并将日期以自unix纪元以来的秒数输出。我该如何在unix纪元中使用jquery时间?

我看到了这个例子:January 10, 2015

<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)? - Matt Ball
4个回答

4
您不需要将Unix时间戳转换为ISO格式。Hal发布了一段修改jQuery的timeago插件代码,对我很有用。只需将timeago的parse()函数在第89行替换为以下内容即可:
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从时间戳获取时间差?


2

Date()构造函数可以接受自1970年1月1日00:00:00 UTC以来的毫秒数,timeago可以与Date对象一起使用。因此:

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

应该可以工作。


2
您可以使用 Unix 时间戳初始化一个 Date 对象,但是 JavaScript 的日期对象需要以毫秒为单位的时间,所以代码如下所示:
var d = new Date(<?php echo date('U') ?>000);

转化为以下内容:

var d = new Date(1285027311000);

它也可以解析大多数标准的文本日期格式,就像PHP的strtotime()函数一样,尽管您需要测试它的容错性。


也许我没有理解你的观点,但问题是关于jQuery和django的吗? - Michael Mao

0

步骤1 首先添加JQuery和timeago jquery插件

<script type="text/javascript" src="https://timeago.yarp.com/jquery.timeago.js"></script>

步骤2 无需在标签之间写任何内容

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

步骤三 使用以下 JQuery 代码

var postAddDate = new Date($(".timeago").attr("title"));
var timeAgo = jQuery.timeago(postAddDate);
$(".timeago").html(timeAgo);

内存高效版本

$(".timeago").html(jQuery.timeago(new Date($(".timeago").attr("title"))));

在 Codepen 中查看


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接