php - 将日期时间保存到 DB codeigniter 总是 1970
问题描述
我有一个代码来保存数据库中的发布日期,但它总是更改为 1970/01/01 07:00 我使用 codeigniter 框架,这是我的视图代码
<div class="form-group">
<label class="control-label col-md-2">Publish Date</label>
<div class="col-md-10">
<div class="input-group date form_datetime bs-datetime" data-date-format="yyyy-mm-dd HH:ii">
<input type="text" name="form[date]" class="form-control" readonly="">
<span class="input-group-addon">
<button class="btn default date-reset" type="button">
<i class="fa fa-times"></i>
</button>
</span>
<span class="input-group-addon">
<button class="btn default date-set" type="button">
<i class="fa fa-calendar"></i>
</button>
</span>
</div>
</div>
</div>
这是我的控制器
$form = $this->input->post('form');
$data['PUBLISH'] = date('Y/m/d H:i a', strtotime($form['date']));
当我打印时$form['date']
,结果是正常的,但是当我转换$form['date']
为日期格式时,它是错误的错误在哪里?
解决方案
看起来您的输入名称和数组键不一致(“日期”与“日期”)。
Unix 时间戳相对于 1970 年 1 月 1 日,因此这是时间戳 0 的值。未定义的数组键将导致值为 null(并且可能在日志中出现通知/警告)。strtotime
当第一个参数为 null 时将返回 false,当传递到date
1970/01/01 时将被强制转换为 0。
编辑
从您在评论中的附加信息来看,问题是您提供的日期格式无法被strtotime
. 您将需要使用不同的方法解析您的预期格式。
您可以使用DateTime::createFromFormat
解析特定格式,然后使用DateTime::format
将其存储为所需格式。例如:
$date=DateTime::createFromFormat("d F Y - H:i", $form["date"]);
$data["PUBLISH"]=$date->format("Y/m/d H:i a");
推荐阅读
- java - iText PDF 填写表单字体未更改
- java - 如何让 jProfiler 记录方法调用参数?
- python - 无法从 django 的数据库中渲染旋转木马中的图像?
- java - Spring Boot Form登录自定义UserDetailsService授权不起作用
- matlab - 为金融时间序列实施 Garch 1,1 模型时遇到问题
- python - SQLAlchemy 如何从子查询中选择 ORM 对象
- reactjs - React 和 Jest:无法模拟来自 react-router-dom 的链接功能
- python-3.x - GCP AI 平台上 TensorFlow 模型的输入格式
- php - PHP Header Location:由脚本确定的 URI
- flutter - 从构造函数获取数据并将其传递给变量