我正在运行一个评论脚本,我想修复每个帖子添加的时间。
虽然它在挪威发布了19:21,但在其他地方发布了20:21。巫师也会让"time since“变得无用。
你理解这个问题吗?
我基本上是在寻找一种方法,将时间更改为每个用户的本地时间。
有人能为我的问题提供解决方案吗?我目前使用的是php,但我也可以使用javascript。
我见过一个网站使用这个代码: document.write( GetElapsedTime( 1330160527 ) );但话又说回来,我不知道如何才能获得每个时间值。
发布于 2012-03-07 09:29:10
在Javascript中,new Date().getTime()返回自1970年1月1日午夜以来的毫秒数本地时间,即基于浏览器的时区。要将此时间转换为服务器的时间,服务器必须使用它自己计算的自1970年1月1日以来所经过的毫秒来呈现页面,您可以使用Javascript将浏览器的时间转换为服务器的时区,如下所示:
var serverTime = 1330160527; // Sever's time rendered by PHP
// Calculate time difference, rounding it to nearest half hour.
var timeDifference = Math.round ( (new Date().getTime() - 1330160527)
/ (30 * 60 * 1000) ) * (30 * 60 * 1000);
// Later, when we post the time to the server, we adjust by timeDifference
var localTime = (new Date()).setTime(new Date().getTime() - timeDifference);请注意,我们将时间差(以毫秒为单位)舍入为最接近的半小时,因为两个不同的时区必须至少相隔半小时,但绝不能小于一小时。
发布于 2012-03-07 09:39:51
您是否有权访问用户的时区信息?如果你这样做,你可以在php中做,假设你把发布的时间保存在unix时间戳中。如果不是,那么你将不得不使用javascript来完成。
$time = time(); // Current time in unix timestamp
$timezone = new DateTimeZone('Europe/London'); // Desired timezone
$datetime = new DateTime();
$datetime->setTimezone($timezone);
$datetime->setTimestamp($time);
echo $datetime->format('Y-m-d H:i:s');发布于 2012-03-07 10:38:32
如果您向客户端发送UTC时间戳(即自1970年1月1日00:00或1970-01-01T00:00:00.000Z起的毫秒),则可以使用以下命令将其转换为javascript中的本地时间:
// Just to get local timezone offset
var tmp = new Date();
// Adjust timestamp to local time and create a local date object
var localTime = new Date(timestamp - tmp.getTimezoneOffset() * 6e4);javascript时区偏移量以分钟为单位返回,并与本地时间相加以获得UTC,因此对于UTC+10时区,其值为-600。您可以通过反向操作返回等效的时间戳:
var tmp = new Date();
var UTCtimestamp = tmp + tmp.getTimezoneOffset() * 6e4 当然,这一切都依赖于本地机器的时钟设置是否准确。
https://stackoverflow.com/questions/9594389
复制相似问题