繁体   English   中英

如何使用jQuery以秒为单位获得两个时间戳之间的时差?

[英]How to get time difference between two timestamps in seconds with jQuery?

我想根据 MySQL 时间戳显示x seconds ago

我找到了名为timeago的插件

但是我找不到让它只显示几秒钟的方法。

我对 61 秒或 300 秒没问题。 有什么方法可以使用 timeago 或纯 jQuery / JavaScript 将输出转换为秒?

谢谢你的帮助 !

编辑:

示例案例:

$time1 = "2014-02-02 23:54:04"; // plus PHP ways to format it.
//$time2 = NOW() , or date(); whatever. 

我只想获取自$time1以来的秒数。

编辑2:

工作代码:

<script type="text/javascript">
$(function(){
    var d2 = new Date();
    var d1 = new Date("2014-02-02 23:54:04");
    $("a#timedif").html("Diff. Seconds : "+((d2-d1)/100).toString());
    // note that you may want to round the value
});
</script>

它输出Diff. Seconds : NaN Diff. Seconds : NaN

假设您将字符串解析为 JavaScript 日期对象,您可以执行 (date2 - date1)/1000

要解析 mysql 格式的时间戳,只需将字符串输入到 new Date() 中:

 var d2 = new Date('2038-01-19 03:14:07');
 var d1 = new Date('2038-01-19 03:10:07');

 var seconds =  (d2- d1)/1000;

修复问题中的编辑 2:

<script type="text/javascript">
$(function(){
var d2 = new Date();
var d1 = new Date("2014-02-02 23:54:04");
$("a#timedif").html("Diff. Seconds : "+((d2-d1)/1000).toString());
 });

如果你对那个插件没问题,你可以稍微修改它以只用几秒钟

  var words = seconds < 45 && substitute($l.seconds, Math.round(seconds)) ||
    seconds < 90 && substitute($l.minute, 1) ||
    minutes < 45 && substitute($l.minutes, Math.round(minutes)) ||
    minutes < 90 && substitute($l.hour, 1) ||
    hours < 24 && substitute($l.hours, Math.round(hours)) ||
    hours < 42 && substitute($l.day, 1) ||
    days < 30 && substitute($l.days, Math.round(days)) ||
    days < 45 && substitute($l.month, 1) ||
    days < 365 && substitute($l.months, Math.round(days / 30)) ||
    years < 1.5 && substitute($l.year, 1) ||
    substitute($l.years, Math.round(years));

使用这部分,只需转换为秒

看小提琴: http : //jsfiddle.net/zGXLU/1/

jQuery 只是一个 JavaScript 库,所以 JavaScript 只会在你的 jQuery 脚本中工作:

// specified date:
var oneDate = new Date("November 02, 2017 06:00:00");

// number of milliseconds since midnight Jan 1 1970 till specified date
var oneDateMiliseconds = oneDate.getTime();

// number of milliseconds since midnight Jan 1 1970 till now
var currentMiliseconds = Date.now(); 

// return time difference in milliseconds
var timePassedInMilliseconds = (currentMiliseconds-oneDateMiliseconds)/1000;
alert(timePassedInMilliseconds);

我使用时差分别计算每个值

var start = new Date('Mon Jul 30 2018 19:35:35 GMT+0500');
var end = new Date('Mon Jul 30 2018 21:15:00 GMT+0500');

var hrs = end.getHours() - start.getHours();
var min = end.getMinutes() - start.getMinutes(); 
var sec = end.getSeconds() - start.getSeconds();  

var hour_carry = 0;
var minutes_carry = 0;
if(min < 0){
       min += 60;
       hour_carry += 1;
   }
hrs = hrs - hour_carry;
if(sec < 0){
       sec += 60;
       minutes_carry += 1;
   }

min = min - minutes_carry;

console.log("hrs",hrs);
console.log("min",min);
console.log("sec",sec);
console.log(hrs + "hrs " + min +"min " + sec + "sec");

获取两个时间戳之间的差异

秒:(通过 new Date().getTime() 获取时间戳)

diff_in_time = (timestamp_1 - timestamp2);

天数:

diff_in_days = parseInt((timestamp_1 - timestamp2) / (1000 * 3600 * 24));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM