如何使用 php mysqli 将事件的实时时间插入数据库?

2024-03-11

我正在尝试添加检查记录更改的日期时间。我在表中使用日期时间数据类型。

`date_added` datetime DEFAULT '0000-00-00 00:00:00',

我使用以下 php 内置函数用于查询中的日期时间列

date("Y-m-d H:i:s");

问题是这个函数date("Y-m-d H:i:s");当我在服务器上同一时间签入时,给我两个不同的日期和时间。

本地主机结果

 date("Y-m-d H:i:s"); == 2016-07-12 13:10:04

服务器结果

 date("Y-m-d H:i:s"); == 2016-07-12 05:08:07

所以当我使用TimeAgo http://snipplr.com/view/37578/facebook-style-time-ago/功能于date_added列它给了我错误的时间,我的意思是服务器时间。例如我添加一条记录然后函数将返回我Record Added 8 Hours Ago所以这是完全错误的。我想知道如何将事件的实时添加到数据库中,我可以使用它来显示TimeAgo()功能。

有什么方法可以在不更改服务器时区的情况下做到这一点,因为如果我更改时区,那么它只会为位于同一地区的人显示正确的时间,但其他人会得到什么?我认为他们会面临同样的问题。

我想开发类似 Facebook DateTime 功能的东西。

谁能指导我如何实现这种功能?我谨表示赞赏。谢谢


与其摆弄时区,为什么不直接做

ALTER TABLE `your_table`
  CHANGE `date_added` `date_added`
  TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

这会将您的列从 DATE 列更改为 TIMESTAMP 列 https://stackoverflow.com/questions/12408436/convert-all-colums-in-the-rows-from-date-to-timestamp-mysql,在此过程中将所有日期转换为其各自的 UTC 时间戳。

当插入新行时,它将使用当前时间戳作为值 http://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html。时间戳始终采用 UTC,因此您不必更改 MySql 服务器上的时区,也不必在插入新行时提供日期。

如果您不能或不想更改列,您也可以通过选择时间戳

SELECT UNIX_TIMESTAMP('date_added') FROM your_table;

对于你的 TimeAgo,你可以这样做

$now = new DateTime;
$dateAdded = new DateTime("@$yourTimestampFromDb");
$dateAdded->setTimezone($now->getTimezone());
$timeSinceAdded = $dateAdded->diff($now);

当您向 DateTime 提供时间戳时,无论您设置的默认服务器时区如何,它将始终使用 UTC。因此,您必须转换$dateAdded到默认时区(如上所示)或转换$timeSinceAdded到 UTC。

要将 dateTime 更改为当前访问用户的时区,您可以

  • 需要在您的数据库中包含此信息,例如因为您要求注册用户提供此信息
  • or 您可以在运行时确定它,通常是通过对访问用户的 IP 进行 GeoIP 查找或从用户的浏览器发送日期时间偏移量。 https://stackoverflow.com/search?q=getting%20the%20timezone%20of%20the%20user

无论如何,您只需将两个日期时间更改为该时区即可。这可以通过以下方式轻松完成setTimezone(). https://stackoverflow.com/questions/2095020/how-do-you-change-the-timezone-in-php-for-an-existing-timestamp/2095165#2095165

The $timeSinceAdded那么将是一个DateInterval目的,你可以这样使用 http://php.net/manual/en/dateinterval.format.php

echo $timeSinceAdded->format('%a total days');

请参阅链接了解更多详细信息,例如可用的格式修饰符。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 php mysqli 将事件的实时时间插入数据库? 的相关文章

随机推荐

  • SAS 和 Excel 中百分位数的不同结果

    我正在尝试获取 SAS 中的百分位数 我在 Excel 中得到了百分位数 我期望在 SAS 中也得到相同的结果 但是当我在 SAS 中得到百分位数时 它与 excel 中的不同 我正在使用下面的示例数据 1 2 3 4 5 6 7 8 9
  • Android Google Places API - PlaceAutocompleteFragment 清除按钮侦听器

    I am using Google Places API for Android PlaceAutocompleteFragment https developers google com places android api API in
  • 如何在浏览器历史记录中查找当前位置索引

    浏览器通过以下方式提供客户端会话中访问过的页面列表window history目的 这样 客户端代码可以在列表中向前和向后导航 使用history back history forward and history go 但是客户端代码如何确
  • jquery中如何检查div是否获得焦点?

    我正在尝试在我的视图中使用剑道网格 我想在按 Enter 键后在网格中创建新行 我可以通过编写以下代码来做到这一点 div div div div document body keypress function e if e keyCode
  • 除法作为乘法和 LUT ? / 快速浮点数除法倒数

    是否可以在表格中进行浮点除法的倒数 查找表 例如 1 f gt 1 inv f 怎么办呢 我认为一些掩模和移位应该应用到浮动以使 它是索引的一种形式吗 究竟会怎样呢 您可以像这样猜测一个近似的逆 int x bit cast
  • 为什么无法使用 DataContractSerializer 序列化对象?

    我正在尝试使用 DataContractSerializer 序列化类型 但出现以下异常 这不适用于 SOA 服务 但如果可能的话 我仍然想使用 DataContractSerializer 我正在使用 Net 3 5 SP1 类型 Sys
  • Python 3.5 中的类型提示是什么?

    Python 3 5 中最受关注的功能之一是类型提示 一个例子类型提示中提到本文 http lwn net Articles 650904 and this one http lwn net Articles 640359 同时还提到负责任
  • jquery从字符串到时间的转换

    我正在开发一个系统 它以以下格式记录一天中的各个时间 06 53 22 or 19 23 58作为例子 谁能告诉我是否可以将此字符串转换为 javascript 构造 我可以用它来比较一天中的时间 您可以这样解析时间 function ti
  • 使用 -fPIC 编译的程序在跨过 GDB 中的线程局部变量时崩溃

    这是一个非常奇怪的问题 只有当程序编译时才会出现 fPIC option Using gdb我能够打印线程局部变量 但单步执行它们会导致崩溃 thread c include
  • WiX 中的新对话框,单击“后退”会跳过该对话框

    我是 WiX 的新手 正在尝试通过添加新的对话框来自定义对话框队列 新对话框的名称为 ServerChoice 流程为 SetupTypeDlg 完整或典型 ServerChoice verifyReadyDlg or SetupTypeD
  • Tomcat ExpiresFilter 无法正常工作

    我无法让 Tomcat 发送具有正确过期定义的图像 浏览器不断发送对已下载图像的 get 请求 Tomcat 响应 304 我想要的是 Tomcat 将使用正确的 expires 标头响应初始请求 并且没有任何 Last modified
  • 这是 n 层架构的正确实现吗?

    我在过去一年左右的时间里一直在学习 C 并尝试在此过程中融入最佳实践 在 StackOverflow 和其他网络资源之间 我认为我处于正确分离我的关注点的正确轨道上 但现在我有一些疑问 并希望在将整个网站转换为这个新网站之前确保我走的是正确
  • 将 null 值视为空元素的 XmlSerializer

    我正在编写一个小型 C 应用程序 它需要能够以 XML 形式读取 写入一些配置数据 我通过创建一些简单的模型类来做到这一点 其属性具有XmlElement在需要的地方添加属性 并通过一个XmlSerializer 我想要XmlSeriali
  • DBSCAN 算法可以创建少于 minPts 的簇吗?

    我刚刚编写了 DBSCAN 算法 我想知道 DBSCAN 算法是否可以允许集群中的点数少于所使用的 minPts 参数 我一直在使用http people cs nctu edu tw rsliang dbscan testdatagen
  • 在 kableExtra 表中合并迷你图

    我正在尝试创建一个带有副标题和迷你图的表格 我可以创建带有副标题的表格kableExtra包裹 我可以创建一个带有迷你图的表格formattable and sparkline包裹 但是 我无法将两者结合起来 有办法吗 我看见this ht
  • Visual Studio v.09 中的 Qt 与 C#/.NET?

    你们中有人有工作经验吗 Qt http en wikipedia org wiki Qt toolkit 和 Visual Studio 中的 C 它是否可能 易于一起使用 我已经搜索了 Qt 的 C 绑定 但所有项目似乎都已被放弃 我正在
  • python“导入错误:无法导入名称 urandom”

    不知何故 我的 python 被破坏并发出错误 jseidel EDP15 etc default python c import random Traceback most recent call last File
  • Windows 右键单击​​上下文菜单 + 子菜单

    如何在 Windows 上下文菜单中创建子菜单条目 我可以创建主菜单 但我也想关联一些子菜单 此外 如何将图标关联到菜单项 None
  • 使用 Ruby on Rails 的范围滑块

    使用Ruby on Rails 我的滑块代码如下 这给了我滑块如下 但我想要范围滑块 如下所示 它有两个滑块并给出两个值 something sliderjquery 方法 我在 ruby 中的代码应该是什么来显示滑块 如第二张图所示 我认
  • 如何使用 php mysqli 将事件的实时时间插入数据库?

    我正在尝试添加检查记录更改的日期时间 我在表中使用日期时间数据类型 date added datetime DEFAULT 0000 00 00 00 00 00 我使用以下 php 内置函数用于查询中的日期时间列 date Y m d H