首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL时间戳仅存储在RDS中的0000-00- 00 :00:00?

MySQL时间戳仅存储在RDS中的0000-00- 00 :00:00?
EN

Stack Overflow用户
提问于 2014-04-01 12:07:50
回答 3查看 1.5K关注 0票数 0

我有一个CodeIgniter应用程序,config.php文件中的时区设置在gmt。

代码语言:javascript
运行
复制
$config['time_reference'] = 'gmt';

我注意到两件事:

  1. 本地数据库在数据库中设置时间戳,但不设置GMT,即使我已经显式设置了时间戳。为什么会这样呢?
  2. 我的生产版Amazon数据库将所有时间戳设置为0000-00- 00 :00:00。为什么会这样呢?

记住,我不会在任何模型中显式地传递时间引用。我将表设置为在插入记录时自动插入时间戳。

EN

Stack Overflow用户

发布于 2014-04-01 12:15:44

在事件表单中,您应该向服务器发送一个隐藏的输入,它将包含客户端的时区偏移量。您可以通过Javascript的Date.getTimezoneOffset()方法获得它(它使您在UTC和用户的本地时间之间以分钟为单位进行抵消)。

如果不能这样做,可以将用户的本地时区保存到db中,或者以事件形式询问它。

然后,在插入或更新查询中,可以使用DATE_ADD('2012-12-13 19:41:00“,用户偏移量分钟)来转换时间戳。您也可以在php或客户端提交表单.

例如,在PHP中:

代码语言:javascript
运行
复制
strtotime($event_date);

给出日期的Unix时间戳(以秒为单位)。要将其转换为另一个时区,可以使用javascript方法在几分钟内得到偏移量,您可以这样做:

代码语言:javascript
运行
复制
$dbTimestamp = strtotime($event_date) + $_POST['offsetInMinutes']/60;

如果在此表单中获得偏移量:“+2:00”或“-6:00”,则可以使用正则表达式在数小时内得到偏移:

代码语言:javascript
运行
复制
preg_match('/(.*)\:00/', '+2:00', $match)

将“+2”设置为$match1

另一个:

首先,将主时间引用设置为配置文件中的“GMT”:

代码语言:javascript
运行
复制
$config['time_reference'] = 'gmt';

helper.html中的时区引用中选择,或者使用timezone_menu()在下面的代码中设置变量或更新$timezone的DB列:

代码语言:javascript
运行
复制
$time = now();  
$timezone = 'UM5';  
$daylight_saving = TRUE; // or FALSE  
$local_time = unix_to_human(gmt_to_local($time, $timezone, $daylight_saving));  
echo $local_time;
票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22785414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档