php 获取时间偏移量,将数据从PHP传输到JavaScript时,计算时区偏移量

好吧,这是一个奇怪的问题。在我的一个修改中,PHP代码使用time()将时间戳存储在数据库中 - 据我所知,它使用UTC时区。现在,我抓取这些数据并将其用作一些JavaScript函数中的参数。此函数返回类似于“30秒前”或“2小时30分钟前”等的时间字符串。下面是完整的函数:

time_string : function(seconds,complexity,seconds_left,suffix,prefix){

var difference = Math.abs(dynamo.time - seconds);

seconds_left = seconds_left == null ? 0 : seconds_left;

seconds = +seconds;

if(difference < 15 && !seconds_left){

return "Just now";

}

suffix = suffix != null

? (seconds_left == 1

? ""

: suffix)

: (seconds_left == 1

? ""

: " ago");

prefix = prefix != null ? prefix : "";

if(difference > 86400){

return new Date(seconds * 1000).toDateString();

} else {

var years = Math.floor(difference / 31536000);

var days = Math.floor((difference / 86400) % 365);

var hours = Math.floor((difference / 3600) % 24);

var minutes = Math.floor((difference / 60) % 60);

var second = difference % 60;

var time_str = [];

if(years > 0) time_str[time_str.length] = dynamo.toolbox.format_number(years) + " year" + (years == 1 ? '' : 's');

if(days > 0) time_str[time_str.length] = days + " day" + (days == 1 ? '' : 's');

if(hours > 0) time_str[time_str.length] = hours + " hour" + (hours == 1 ? '' : 's');

if(days <= 1){

if(minutes > 0) time_str[time_str.length] = minutes + " minute" + (minutes == 1 ? '' : 's');

if(second > 0 && !minutes && !hours && !days){

time_str[time_str.length] = second + " second" + (second == 1 ? '' : 's');

}

}

complexity = complexity != null ? complexity : 2;

time_str = time_str.slice(0,complexity);

if(time_str.length > 1){

var final_str = time_str[time_str.length-1];

time_str.pop();

time_str = time_str.join(", ") + " and " + final_str;

} else {

time_str = time_str.join("");

}

}

return prefix + time_str + suffix;

}在代码中,使用dynamo.time。 dynamo.time被设置为PHP中的当前time()(我用它来计算存储时间和当前时间之间的时间差)。

然而,我需要调整difference变量来考虑客户端的时区差异,与服务器的时区差异(我认为它是UTC)。

我会如何去做这件事?

如果你想要它,这里有一个JS小提琴,对函数进行一些测试:http://jsfiddle.net/Jskjv/1/

编辑:我会能够混淆新的日期()。getTimezoneOffset()来实现这一目标?唯一的问题是会与DST产生不一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值