我正在运行评论脚本,我想确定每个帖子的添加时间。
虽然它在挪威19:21发布,但它在其他地方的20:21发布了。 女巫也会使“时间”无用。
你明白这个问题吗?
我基本上是在寻找一种方法来改变每个用户本地区的时间。
有人能为我提供解决方案吗? 我目前正在使用php,但我也可以使用javascript。
我见过一个网站使用这个代码:document.write(GetElapsedTime(1330160527)); 但话说回来,我不知道如何获得每个时间价值。
答案 0 :(得分:0)
在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);
请注意,我们将时差(以毫秒为单位)舍入到最接近的半小时,因为两个不同的时区必须相隔至少半小时,但绝不是一小时的一小部分。
答案 1 :(得分:0)
您是否可以访问用户时区信息?如果你这样做,你可以在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');
答案 2 :(得分:0)
如果您向客户端发送UTC时间戳(即自1970年1月1日00:00或1970-01-01T00:00:00之后的00:00),您可以使用以下命令将其转换为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
当然,这一切都取决于本地机器的时钟设置是否准确。