Javascript 获取web用户';s时区作为字符串
我正在制作一个网站,用户将在其中上传问题和答案。现在我需要获取用户的时区,我可以将其存储在变量$TimeZoneNameTo中,而不仅仅是“Asia/Kathmandu”。无论如何,时区作为字符串将在变量$TimeZoneNAmeTo中检测和选择,因此对于任何时区的任何用户,在显示时,datetime将转换为他/她的时区,而不是UTCJavascript 获取web用户';s时区作为字符串,javascript,php,Javascript,Php,我正在制作一个网站,用户将在其中上传问题和答案。现在我需要获取用户的时区,我可以将其存储在变量$TimeZoneNameTo中,而不仅仅是“Asia/Kathmandu”。无论如何,时区作为字符串将在变量$TimeZoneNAmeTo中检测和选择,因此对于任何时区的任何用户,在显示时,datetime将转换为他/她的时区,而不是UTC $TimeZoneNameFrom="UTC"; $TimeZoneNameTo="Asia/Kathmandu"; echo "uploaded on"
$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");
$TimeZoneNameFrom=“UTC”;
$timezonemato=“亚洲/加德满都”;
echo“上传日期”。$upload\u日期;
回声“
”;
回显日期\创建($upload\日期,新日期时区($TimeZoneNameFrom))
->setTimezone(新日期时区($TimeZoneNameTo))->格式(“Y-m-DH:i:s”);
回答您提出的问题:
在现代浏览器上,您可以使用
var tz = Intl.DateTimeFormat().resolved.timeZone;
如果你的浏览器没有(IE10和Safari),那么它就有点复杂了。我使用moment.js为此制作了一个小库:
回答您的问题:
大多数情况下,您不必知道客户端的时区,只需让他的浏览器格式化您发送的UTC时间戳即可。见罗布的答案 回答您提出的问题: 在现代浏览器上,您可以使用
var tz = Intl.DateTimeFormat().resolved.timeZone;
如果你的浏览器没有(IE10和Safari),那么它就有点复杂了。我使用moment.js为此制作了一个小库:
回答您的问题:
大多数情况下,您不必知道客户端的时区,只需让他的浏览器格式化您发送的UTC时间戳即可。见罗布的答案 回答您提出的问题: 在现代浏览器上,您可以使用
var tz = Intl.DateTimeFormat().resolved.timeZone;
如果你的浏览器没有(IE10和Safari),那么它就有点复杂了。我使用moment.js为此制作了一个小库:
回答您的问题:
大多数情况下,您不必知道客户端的时区,只需让他的浏览器格式化您发送的UTC时间戳即可。见罗布的答案 回答您提出的问题: 在现代浏览器上,您可以使用
var tz = Intl.DateTimeFormat().resolved.timeZone;
如果你的浏览器没有(IE10和Safari),那么它就有点复杂了。我使用moment.js为此制作了一个小库:
回答您的问题:
大多数情况下,您不必知道客户端的时区,只需让他的浏览器格式化您发送的UTC时间戳即可。见罗布的答案 如果您只想根据用户的系统设置确定当前时间,那么只需将UTC时间值发送到客户端即可。自1970-01-01T00:00:00Z起,该值应为毫秒。UNIX使用自同一纪元起的秒数,因此您只需将UNIX UTC时间戳乘以1000:
var newLocalDate = new Date(UNIXutcTimeValue * 1000);
现在只需以用户可读的形式呈现,比如使用:
e、 g.2014-06-06T12:00:00Z为1402056000秒或14020560000000毫秒,因此在Safari中:
alert(new Date(1402056000000).toLocaleString()) // 6 June 2014 20:00:00 AWST
当然,您可以随时使用日期方法来格式化字符串,只要您愿意。如果您只需要根据用户的系统设置设置当前时间,那么只需将UTC时间值发送到客户端即可。自1970-01-01T00:00:00Z起,该值应为毫秒。UNIX使用自同一纪元起的秒数,因此您只需将UNIX UTC时间戳乘以1000:
var newLocalDate = new Date(UNIXutcTimeValue * 1000);
现在只需以用户可读的形式呈现,比如使用:
e、 g.2014-06-06T12:00:00Z为1402056000秒或14020560000000毫秒,因此在Safari中:
alert(new Date(1402056000000).toLocaleString()) // 6 June 2014 20:00:00 AWST
当然,您可以随时使用日期方法来格式化字符串,只要您愿意。如果您只需要根据用户的系统设置设置当前时间,那么只需将UTC时间值发送到客户端即可。自1970-01-01T00:00:00Z起,该值应为毫秒。UNIX使用自同一纪元起的秒数,因此您只需将UNIX UTC时间戳乘以1000:
var newLocalDate = new Date(UNIXutcTimeValue * 1000);
现在只需以用户可读的形式呈现,比如使用:
e、 g.2014-06-06T12:00:00Z为1402056000秒或14020560000000毫秒,因此在Safari中:
alert(new Date(1402056000000).toLocaleString()) // 6 June 2014 20:00:00 AWST
当然,您可以随时使用日期方法来格式化字符串,只要您愿意。如果您只需要根据用户的系统设置设置当前时间,那么只需将UTC时间值发送到客户端即可。自1970-01-01T00:00:00Z起,该值应为毫秒。UNIX使用自同一纪元起的秒数,因此您只需将UNIX UTC时间戳乘以1000:
var newLocalDate = new Date(UNIXutcTimeValue * 1000);
现在只需以用户可读的形式呈现,比如使用:
e、 g.2014-06-06T12:00:00Z为1402056000秒或14020560000000毫秒,因此在Safari中:
alert(new Date(1402056000000).toLocaleString()) // 6 June 2014 20:00:00 AWST
当然,您可以随时使用Date方法来格式化字符串,不管您想要什么。+1因为是的,对于OP的问题,知道用户时区似乎没有用,他不必走艰难的道路……tq代表您的注释:)@如果你的答案对你有好处,你应该考虑接受它+ 1,因为是的,对于OP的问题,知道用户时区似乎是无用的,他不必走硬路……TQ为你的ANNSWER…如果你的答案对你有好处,你应该考虑接受它+ 1,因为是的,对于OP的问题,知道用户时区似乎是无用的,他不必走硬路……TQ为你的ANNSWER…如果你的答案对你有好处,你应该考虑接受它+ 1,因为是的,对于OP的问题,知道用户时区似乎是无用的,他不必走硬路……TQ为你的ANNSWER…如果你的回答对你有好处,你应该考虑在Safari中不支持ITITL。他们在干什么?虽然safari中可能不支持他们。。。你的回答帮助了@dystroy:)@dystroydunno,不过作为约会的方式会好得多。注意:时区没有标准,只有数据库