javascript - 以字符串形式获取网络用户的时区

标签 javascript php

我正在创建一个网站,用户将在其中上传问题和答案。现在我需要获取用户的时区,我可以将其存储在变量 $TimeZoneNameTo 中,而不仅仅是“亚洲/加德满都”。无论如何,时区作为字符串将被检测并存储在变量 $TimeZoneNAmeTo 中,因此对于任何时区的任何用户,日期时间将在显示时转换为他/她的时区而不是 UTC。

$TimeZoneNameFrom="UTC";
    $TimeZoneNameTo="Asia/Kathmandu";
echo "uploaded on".$upload_date;
    echo"<br>";
    echo date_create($upload_date, new DateTimeZone($TimeZoneNameFrom))
    ->setTimezone(new DateTimeZone($TimeZoneNameTo))->format("Y-m-d H:i:s");

最佳答案

如果您只想根据用户的系统设置显示时间,则只需将 UTC 时间值发送到客户端即可。该值应为自 1970-01-01T00:00:00Z 以来的毫秒数。 UNIX 使用自同一纪元以来的秒数,因此您只需将 UNIX UTC 时间戳乘以 1000:

var newLocalDate = new Date(UNIXutcTimeValue * 1000);

现在只需以用户可读的形式呈现它,例如使用 Date.prototype.toLocaleString :

alert(newLocalDate.toLocaleString());

例如2014-06-06T12:00:00Z 是 1402056000 秒或 1402056000000 毫秒,因此在 Safari 中:

alert(new Date(1402056000000).toLocaleString()) // 6 June 2014 20:00:00 AWST

当然,您始终可以使用 Date 方法来格式化字符串。

关于javascript - 以字符串形式获取网络用户的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24061115/

相关文章:

javascript - react : How to wait until ref is available when inserted (rendered) within a second container

php - 从数值中获取颜色值

javascript - 类型错误 : Cannot read property 'then' of undefined (return promise? )

javascript - 如何使用 JavaScript 函数单击按钮将多个值从选择列表框添加到另一个列表框?

javascript - 将一个数组的每个元素乘以另一个数组的部分的方法?

javascript - 使用 Facebook 登录但仍然收到 : "Unauthenticated access is not supported for this identity pool"

php - 对 WooCommerce 中最便宜的购物车商品应用 100% 的优惠券折扣

php - 破坏构造函数

javascript - 空格导致我的 javascript 显示不正确( trim 输出)

php - 如何合并 MySQL 表中的两条冗余记录,维护所有 PK/FK 关系?