我遇到了使用 javascript datepicker 显示并允许用户从可用日程安排日期的日历中选择日期以进行房间预订的常见问题。
浏览器的时区转换意味着这些日期总是有一定的偏差,因此通常在向用户显示保留日期时,日期将落在查看者的“明天”,当服务器(资产本地的时区或存储在数据库中的房间)将它们显示为“今天”。
我希望用户的浏览器忽略 javascript 日期转换,只使用数据库传入的实际日期时间。
然而,这甚至发生在像这样一个非常简单的例子上:
var date = '2013-02-05';
var newdate = new Date(date);
console.log(newdate); // Mon Feb 04 2013 16:00:00 GMT-0800 (PST)
浏览器似乎date
假定该变量为 GMT,当我从中创建一个 javascript 日期对象时,它会将 GMT 时间转换为我的本地时间。
在这种情况下,最好的做法是在数据库中使用 GMT 日期,并将站点的本地时间偏移设置为 javascript 中的变量,然后可用于偏移显示给最终用户的日期,并再次偏移收到的日期从最终用户插入数据库?
这很令人困惑,因为有很多潜在的陷阱——PHP 语言环境、mysql 语言环境或浏览器的语言环境都可能会影响它并弄乱最终日期。任何有关确保一致的日期值的建议表示赞赏!