php - PDO - 根据用户国家更改日期和时间的显示格式
问题描述
我们为法国创建了一个网站,但我们将向外国用户(美国、德国、中国等)开放。
问题是数据库中保存的所有日期都记录在法语区('Europe/Paris'
在我的php.ini文件'datetime'
中,mysql中的字段)
网站的所有查询都只是检索日期并显示它们
我正在使用 PDO:
<?php
try {
$engine = 'mysql';
$host = 'loclahost;
$port = '3310';
$database = 'mydb';
$user_bdd = 'myuser';
$password = 'mypwd';
$dns = $engine.':port='.$port.';dbname='.$database.";host=".$host;
$bdd = new PDO($dns, $user_bdd, $password);
$bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch (Exeption $erreur) {
die ('Erreur : '.$erreur->getMessage());
}
?>
请求示例:
$request = $bdd->prepare('SELECT date from invoices WHERE id = 1');
$request->execute();
$result = $request->fetch();
结果 :
array (size=1)
'date' => string '2017-09-22 13:57:09'
在我的 HTML 中:
<div><?= result['date'] ?></div>
如何根据用户更改日期和时间?有没有办法通过修改 PDO 连接直接做到这一点?
知道在数据库中我为每个用户分配了一个国家代码
FR = French
US = American
CZ = Chinese
以美国用户为例,相同的查询将给出:
array (size=1)
'date' => string '2017-09-22 04:57:09'
解决方案
如果用户的时区已知,您可以使用 DateTime 将时间转换为另一个时区。
$dtLosAngeles = date_create('2017-09-22 13:57:09',new DateTimeZone('Europe/Paris'))
->setTimeZone(new DateTimeZone('America/Los_Angeles'))
;
echo $dtLosAngeles->format('Y-m-d H:i:s'); //2017-09-22 04:57:09
America / New_York 提供不同的时间!如前所述,这些都与 PDO 无关。
推荐阅读
- python - Pandas:使用另一列的 max() 值映射列
- java - 用于为多模块 Java Maven 项目构建 Docker 映像的 Docker 文件
- javascript - 在 gpu.js 中使用变量时“未定义标识符” - 为什么?
- maven - 如何使用 brew 但没有 openjdk 安装 maven?
- php - Http 错误 500 - 不在网站上,而是在访问 PHPMailer 6.1.4 的 Oauth Gmail 配置目录中的文件时
- r - 用列折叠行数据(字符、数字、因子等)
- delphi - 从 IDE 的结构面板中,如何将 TCard 复制到剪贴板?
- java - Maven 在构建 JAR 文件时需要包含文件
- javascript - 删除 JavaScript 字符串中 2 个特定字符串之间的字符
- java - 使用 java 的 SSL 到期信息