我刚刚意识到,如果我将特定记录添加到我的 MySQL 数据库中 - 它会有服务器的日期/时间,而不是特定用户和他们所在的位置,这意味着我的按日期搜索功能是无用的!因为他们将无法通过在他们的时区中添加它的时间而不是在服务器时区中添加它来进行搜索。
在 Codeigniter 中有没有一种方法可以全局设置特定于用户位置的时间和日期(可能使用他们的 IP)以及每次调用 date() 或 time() 时都使用用户时区。
What I am actually asking for is probably how to make my application dependent on each users timezone?
也许最好将每个用户的时区存储在他们的配置文件中并有一个标准时间(服务器时间),然后将时间转换为每个用户的时间?
谢谢大家
最佳答案
听起来您需要做的是将系统中的所有日期和时间存储为 UTC 时间(过去称为 GMT)。这是世界上所有事物都经过调整计算的基准时间。 (例如:中部时间是 UTC 的 -6 小时)
在 MySQL 中,只要您的服务器和数据库配置了正确的时间和时区设置,您就可以使用 UTC_TIMESTAMP() 获取当前的 UTC 时间。
在 PHP 中运行此命令将 PHP 的时间戳设置为 UTC(您将在代码中运行此命令,因此将其放在每个页面或集中索引文件中):
date_default_timezone_set('UTC');
或者您可以直接进入 PHP.INI 并告诉它在全局范围内使用 UTC 时间。 (如果您在一个 PHP 安装上有多个网站,这可能不起作用。
然后在系统的任何地方你需要得到当前的 UTC 时间你可以调用:
time();
然后对于系统中的每个用户,您将需要询问他们所居住的时区,然后在显示时间时针对该用户进行调整。因此,如果现在是世界标准时间下午 5:00,而我住在美国复活节 (-5),则时间将为 5:00 - 5 小时 = 中午 12:00。
这可能是一个漫长的过程,但一旦你做到了,你的用户就会发现它非常有用,尤其是在国际上。
关于PHP,代码点火器 : How to Set Date/Time based on users timezone/location globally in a web app?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2274568/