gpt4 book ai didi

javascript - 如何在当前 UTC 而不是客户端本地时间上创建此 'time ago' 函数引用?

转载 作者:行者123 更新时间:2023-11-30 18:20:30 25 4
gpt4 key购买 nike

在一个网站 ( http://webdesign.onyou.ch/2010/08/04/javascript-time-ago-pretty-date/ ) 上,我发现了这个非常有用的函数,你给它一个 ISO 8601 时间(例如 2010-08-26T22:24:17Z),它会输出从这个时间戳开始耗时。但是因为我想使用 UTC ISO 8601 时间戳,所以我的应用程序可以在国际上使用,例如,如果你在欧洲,它总是说“3 小时前”,即使消息是几秒钟前发布的.

那么如何让它返回自输入 UTC 时间戳和当前 UTC 时间以来经过了多少时间?

    function relativeTime(date_str){
var time_formats = [
[60, 'seconds', 1], // 60
[120, '1 minute ago', '1 minute from now'], // 60*2
[3600, 'minutes', 60], // 60*60, 60
[7200, '1 hour ago', '1 hour from now'], // 60*60*2
[86400, 'hours', 3600], // 60*60*24, 60*60
[172800, 'yesterday', 'tomorrow'], // 60*60*24*2
[604800, 'days', 86400], // 60*60*24*7, 60*60*24
[1209600, 'last week', 'next week'], // 60*60*24*7*4*2
[2419200, 'weeks', 604800], // 60*60*24*7*4, 60*60*24*7
[4838400, 'last month', 'next month'], // 60*60*24*7*4*2
[29030400, 'months', 2419200], // 60*60*24*7*4*12, 60*60*24*7*4
[58060800, 'last year', 'next year'], // 60*60*24*7*4*12*2
[2903040000, 'years', 29030400], // 60*60*24*7*4*12*100, 60*60*24*7*4*12
[5806080000, 'last century', 'next century'], // 60*60*24*7*4*12*100*2
[58060800000, 'centuries', 2903040000] // 60*60*24*7*4*12*100*20, 60*60*24*7*4*12*100
];
var time = ('' + date_str).replace(/-/g,"/").replace(/[TZ]/g," ").replace(/^\s\s*/, '').replace(/\s\s*$/, '');
if(time.substr(time.length-4,1)==".") time =time.substr(0,time.length-4);
var seconds = (new Date - new Date(time)) / 1000;
var token = 'ago', list_choice = 1;
if (seconds < 0) {
seconds = Math.abs(seconds);
token = 'from now';
list_choice = 2;
}
var i = 0, format;
while (format = time_formats[i++])
if (seconds < format[0]) {
if (typeof format[2] == 'string')
return format[list_choice];
else
return Math.floor(seconds / format[2]) + ' ' + format[1] + ' ' + token;
}
return time;
}

最佳答案

改变

var seconds = (new Date - new Date(time)) / 1000;

var seconds = (new Date - new Date(time)) / 1000 + (new Date).getTimezoneOffset()*60;

我在发布之前没有测试你的代码,所以这里是 getTimezoneOffset 的文档: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset

关于javascript - 如何在当前 UTC 而不是客户端本地时间上创建此 'time ago' 函数引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12155512/

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