我似乎不理解日期转换客户端< - >之间的逻辑。服务器。我找不到一个好方法来处理这个...背景:我的应用程序将运行在客户的服务器上,我(通常情况下)将无法配置。所以我需要找出PHP时区偏移量(它主要是UTC,但我认为它可以设置为任何)和浏览器的时区,并在PHP的时区数据库中保存时间戳。
任何帮助将不胜感激。我写了这个:
var Time = {
serverOffset: <?php echo date("Z"); ?>,
clientOffset: new Date().getTimezoneOffset() / 60,
serverToClient: function(PHPTimestamp) {
return PHPTimestamp * 1000 - (Time.clientOffset - Time.serverOffset) * 60 * 60 * 1000;
},
clientToServer: function(JSDate) {
var JSTimestamp = +JSDate;
return JSTimestamp / 1000 + (Time.clientOffset - Time.serverOffset) * 60 * 60;
},
midnight: function(D) {
return D.setHours(0).setMinutes(0).setSeconds(0);
}
}
但它不能作为例外工作。例如,如果我调用Time.clientToServer(new Date()),结果时间戳比我当地时间提前2小时,但它应该只有1(我的时区是UTC-1,我的PHP设置为UTC)。
不过,我猜我的方法并不是最好的方法。等待提示...