var date_now = unixtimestamp;
var date_future = unixtimestamp;
我想返回(实时)从date_now到date_future的剩余天数,小时数,分钟数 .
11 回答
3
只需计算出以秒为单位的差异(不要忘记JS时间戳实际上以毫秒为单位)并分解该值:
// get total seconds between the times
var delta = Math.abs(date_future - date_now) / 1000;
// calculate (and subtract) whole days
var days = Math.floor(delta / 86400);
delta -= days * 86400;
// calculate (and subtract) whole hours
var hours = Math.floor(delta / 3600) % 24;
delta -= hours * 3600;
// calculate (and subtract) whole minutes
var minutes = Math.floor(delta / 60) % 60;
delta -= minutes * 60;
// what's left is seconds
var seconds = delta % 60; // in theory the modulus is not required
EDIT 代码已经调整,因为我刚刚意识到原始代码返回了总小时数等,而不是整天计算后剩余的小时数 .
1
这里是javascript :(例如,未来的日期是新年)
DEMO (每秒更新)
var dateFuture = new Date(new Date().getFullYear() +1, 0, 1);
var dateNow = new Date();
var seconds = Math.floor((dateFuture - (dateNow))/1000);
var minutes = Math.floor(seconds/60);
var hours = Math.floor(minutes/60);
var days = Math.floor(hours/24);
hours = hours-(days*24);
minutes = minutes-(days*24*60)-(hours*60);
seconds = seconds-(days*24*60*60)-(hours*60*60)-(minutes*60);
// Calculate time between two dates:
var date1 = new Date('1110-01-01 11:10');
var date2 = new Date();
console.log('difference in ms', date1 - date2);
// Use Math.abs() so the order of the dates can be ignored and you won't
// end up with negative numbers when date1 is before date2.
console.log('difference in ms abs', Math.abs(date1 - date2));
console.log('difference in seconds', Math.abs(date1 - date2) / 1000);
var diffInSeconds = Math.abs(date1 - date2) / 1000;
var days = Math.floor(diffInSeconds / 60 / 60 / 24);
var hours = Math.floor(diffInSeconds / 60 / 60 % 24);
var minutes = Math.floor(diffInSeconds / 60 % 60);
var seconds = Math.floor(diffInSeconds % 60);
var milliseconds = Math.round((diffInSeconds - Math.floor(diffInSeconds)) * 1000);
console.log('days', days);
console.log('hours', ('0' + hours).slice(-2));
console.log('minutes', ('0' + minutes).slice(-2));
console.log('seconds', ('0' + seconds).slice(-2));
console.log('milliseconds', ('00' + milliseconds).slice(-3));
var time = date_future - date_now;
var seconds = moment.duration(time).seconds();
var minutes = moment.duration(time).minutes();
var hours = moment.duration(time).hours();
var days = moment.duration(time).days();
124
这是一个代码,用于查找天,小时,分钟,秒中两个日期之间的差异(假设未来日期是新年日期) .
var one_day = 24*60*60*1000; // total milliseconds in one day
var today = new Date();
var new_year = new Date("01/01/2017"); // future date
var today_time = today.getTime(); // time in miliiseconds
var new_year_time = new_year.getTime();
var time_diff = Math.abs(new_year_time - today_time); //time diff in ms
var days = Math.floor(time_diff / one_day); // no of days
var remaining_time = time_diff - (days*one_day); // remaining ms
var hours = Math.floor(remaining_time/(60*60*1000));
remaining_time = remaining_time - (hours*60*60*1000);
var minutes = Math.floor(remaining_time/(60*1000));
remaining_time = remaining_time - (minutes * 60 * 1000);
var seconds = Math.ceil(remaining_time / 1000);
1
let delta = Math.floor(Math.abs(start.getTime() - end.getTime()) / 1000);
let hours = Math.floor(delta / 3600);
delta -= hours * 3600;
let minutes = Math.floor(delta / 60);
delta -= minutes * 60;
let seconds = delta;
if (hours.toString().length === 1) {
hours = `0${hours}`;
}
if (minutes.toString().length === 1) {
minutes = `0${minutes}`;
}
if (seconds.toString().length === 1) {
seconds = `0${seconds}`;
}
const recordingTime = `${hours}:${minutes}:${seconds}`;
0
Short and flexible with support for negative values ,虽然使用两个逗号表达式:)
11 回答
只需计算出以秒为单位的差异(不要忘记JS时间戳实际上以毫秒为单位)并分解该值:
EDIT 代码已经调整,因为我刚刚意识到原始代码返回了总小时数等,而不是整天计算后剩余的小时数 .
这里是javascript :(例如,未来的日期是新年)
DEMO (每秒更新)
我称之为"snowman-carl ☃ method",我认为当你需要额外的时间 Span ,如周,飞蛾,年,几个世纪时,它会更灵活一点......并且不需要太多的重复代码:
拥有FIDDLE / ES6版本(2018)/ TypeScript版本(2019)
灵感来自Alnitak的回答 .
请注意,仅根据差异进行计算不会涵盖所有情况:闰年和“夏令时”的切换 .
Javascript用于处理日期的内置库很差 . 我建议你使用第三方javascript库,例如MomentJS;你可以看到here你正在寻找的功能 .
我知道持续时间细分的最佳库是countdown.js . 它处理所有困难情况,如闰年和夏令时csg mentioned,甚至允许您指定模糊概念,如月和周 . 这是您案例的代码:
这是一个JSFiddle,但它可能仅适用于禁用Web安全的FireFox或Chrome,因为countdown.js托管文本/纯MIME类型(您应该提供文件,而不是链接到countdownjs.org) .
这是一个代码示例 . 我使用简单的计算而不是使用预先计算,如1天是86400秒 . 所以你可以轻松地遵循逻辑 .
使用moment.js库,例如:
这是一个代码,用于查找天,小时,分钟,秒中两个日期之间的差异(假设未来日期是新年日期) .
Short and flexible with support for negative values ,虽然使用两个逗号表达式:)
Example:
受RienNeVaPlu͢s解决方案的启发 .