gpt4 book ai didi

javascript - Javascript 减去日期

转载 作者:行者123 更新时间:2023-12-03 10:05:03 24 4
gpt4 key购买 nike

我一直在尝试将时间戳格式化为 facebook/twitter 风格,其中显示 1 秒、1 天、1 个月、1 年等。但是由于某种原因它没有返回正确的值,我不确定为什么?

下面我复制了我正在使用的代码,并制作了两个减去日期的示例。

如果有人可以帮助我并指出问题以及我在显示正确值时出错的地方,那就太好了。

// Returned Result 
$("#TimeFormatted").append("Not divided by 1000: " + FormatTimeAgo(SubtractDates("1432215738000")));
$("#TimeFormatted2").append("Divided by 1000: " + FormatTimeAgo(SubtractDates2("1432215738000")));

function FormatTimeAgo(milliseconds)
{

function numberEnding (number) {
return (number > 1) ? 's' : '';
}

var temp = Math.floor(milliseconds / 1000);
var years = Math.floor(temp / 31536000);

// Years ago
if (years) {
return years + ' year' + numberEnding(years);
}

// Days ago
var days = Math.floor((temp %= 31536000) / 86400);
if (days) {
return days + ' day' + numberEnding(days);
}

// Hours ago
var hours = Math.floor((temp %= 86400) / 3600);
if (hours) {
return hours + ' hour' + numberEnding(hours);
}

// Minutes ago
var minutes = Math.floor((temp %= 3600) / 60);
if (minutes) {
return minutes + ' minute' + numberEnding(minutes);
}

// Seconds ago
var seconds = temp % 60;
if (seconds) {
return seconds + ' second' + numberEnding(seconds);
}

return 'less than a second'; //'just now' //or other string you like;
}

function SubtractDates(databaseTime)
{
// Current time
var date = new Date().getTime();

// Database value
var mysqlDate = new Date(databaseTime);
var getMYSQLDate = mysqlDate.getTime();

// Subtract dates
var subtractDates = date - getMYSQLDate;

return subtractDates;
}

function SubtractDates2(databaseTime)
{
// Current time
var date = new Date().getTime();

// Database value

var mysqlDate2 = new Date(databaseTime / 1000);
var getMYSQLDate2 = mysqlDate2.getTime();

// Subtract dates
var subtractDates2 = date - getMYSQLDate2;

return subtractDates2;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<div id="TimeFormatted"></div>

<div id="TimeFormatted2"></div>

提前谢谢您!

最佳答案

克里斯-

请参阅此帖子,它似乎回答了您的实际问题:

Stackoverflow:Convert a Unix timestamp to time in Javascript

作为以毫秒计算的替代方案,请考虑利用 Date 对象的强大功能。当您减去两个日期值时,您将得到自 1970 年 1 月 1 日以来耗时。然后您只需将年份偏移 -1970,将日期偏移 -1 ...,您就获得了所需的信息。

正如 Ivan Sivak 指出的那样,日期处理起来很棘手......尤其是当您处理世界时区和季节性时间变化时。这时候 moment.js 就派上用场了。

无论如何,如果您想了解不同的方法,这里还有一些可以尝试的代码:

<!doctype html>
<html>
<body>
<div id="stdout"></div>

<script type="text/javascript">

var startDate = new Date( 1432215738000 );

setInterval(
function() {
var t = new Date( new Date() - startDate );
document.getElementById('stdout').innerHTML = (
'year=' + ( t.getUTCFullYear() - 1970) +
' day=' + (t.getUTCDate() - 1) +
' hour=' + t.getUTCHours() +
' minute=' + t.getUTCMinutes() +
' seconds=' + t.getUTCSeconds()
);
},
1000
);
</script>
</body>
</html>

关于javascript - Javascript 减去日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30398023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com