繁体   English   中英

JS / PHP日期时间和时区,在特定日期时间到期的用户注释

[英]JS / PHP datetimes & timezones , user comments that expires on a specific datetime

在我的应用程序上,用户可以发布评论并指定评论的到期日期时间。

过程很简单:

他们选择一个日期,该日期由PHP以注释格式(Ymd H:m:s)插入到DB中。

然后,当我可视化评论时,我在每个评论上都添加了JS倒计时。

倒数是由JS从当前JS日期时间到数据库存储的expiration_datetime CONVERTED IN JS中计算出来的,这是针对每个注释的。

所以我想知道,同时使用PHP插入,然后使用JS输出,这会产生与时区和用户浏览器的datetime与server datetime相关的任何问题吗?

在PHP中,我这样做:

$expiration_datetime = date('Ymd H:m:s');

在JS我转换:

var expiration_datetime = new Date(<?php $expiration_datetime[0]?>,<?php $expiration_datetime[1]?>,<?php $expiration_datetime[2]?>,<?php $expiration_datetime[3]?>,<?php $expiration_datetime[4]?>,<?php $expiration_datetime[5]?>,);

因此,我想知道使用JS转换日期时间是否会对具有不同时区的用户产生任何类型的问题,最后,您建议在其中使用最佳实践要注意或要做的是什么?

更多关于:

我想也许为日期和日期时间设置服务器和js固定时区对于所有访问网站的用户都是唯一的,您是否同意?

JavaScript Date()对象将日期存储为距离纪元(01/01/1970)的毫秒数偏移量,因此,按照您建议的方式构造日期就可以考虑用户的时区。

如果将存储在数据库中的日期归一化为格林尼治标准时间,则可以采用括号括起来的方法并使用:

var expiration_datetime = new Date(Date.UTC(
    <?php $expiration_datetime[0]?>, <?php $expiration_datetime[1]?>,
    <?php $expiration_datetime[2]?>, <?php $expiration_datetime[3]?>,
    <?php $expiration_datetime[4]?>, <?php $expiration_datetime[5]?>,
));

应该向JS解析器表明它接收的日期信息是GMT。

使用unix时间戳,并使用内置JS日期构造器从中构造日期:

php:  time()
js: new Date(ms)

注意:php函数返回秒,js-使用毫秒。 别忘了乘以1000

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM