【问题标题】:Setting Date to Europe/London and Inserting into Database将日期设置为欧洲/伦敦并插入数据库
【发布时间】:2013-10-08 22:03:29
【问题描述】:

我的网站将在欧洲/伦敦时间本地运行,因此我想根据该时区插入他们注册时的日期和时间。

date_default_timezone_set('Europe/London');
$rtime = date("Y-m-d H:ia", time());
$online = 1;

if ($stmt = $mysqli->prepare("INSERT INTO `users`(`username`, `password` ,`email` , `nickname`, `registered`, `online`) VALUES (?, ?, ?, ?, ?, ?)"))
    {
    $stmt->bind_param("ssssii", $username, $password, $email, $nickname, $rtime, $online);
    $stmt->execute();
    $stmt->close();
    }

当我运行这个脚本时,日期/时间仍然显示 0000-00-00 00:00:00,但我不知道为什么。

【问题讨论】:

  • 很好。你有什么问题?
  • 是的,问题是什么?
  • 您的registered 列是什么类型的?
  • 将 bind_param 函数的第一个参数设为 'sssssi' 可能我不确定这是否可行。
  • 是的,您的 $rtime 不是 int 将其 bind_param 类型更改为“s”

标签: php datetime mysqli prepared-statement


【解决方案1】:

如果您询问的是 Timestamp

之类的问题
$date = new DateTime(null, new DateTimeZone('Europe/London'));
$timestamp =  $date->getTimestamp();

使用Unix时间戳来节省数据库时间

当您从数据库中获取此时间戳时,就像...一样隐蔽回来。

date('m/d/Y', 1299446702);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多