1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- <?php
- // +----------------------------------------------------------------------
- // | ThinkPHP [ WE CAN DO IT JUST THINK ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
- // +----------------------------------------------------------------------
- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
- // +----------------------------------------------------------------------
- // | Author: liu21st <liu21st@gmail.com>
- // +----------------------------------------------------------------------
- namespace think\model\concern;
- use DateTime;
- /**
- * 自动时间戳
- */
- trait TimeStamp
- {
- /**
- * 是否需要自动写入时间戳 如果设置为字符串 则表示时间字段的类型
- * @var bool|string
- */
- protected $autoWriteTimestamp;
- /**
- * 创建时间字段 false表示关闭
- * @var false|string
- */
- protected $createTime = 'create_time';
- /**
- * 更新时间字段 false表示关闭
- * @var false|string
- */
- protected $updateTime = 'update_time';
- /**
- * 时间字段显示格式
- * @var string
- */
- protected $dateFormat;
- /**
- * 时间日期字段格式化处理
- * @access protected
- * @param mixed $format 日期格式
- * @param mixed $time 时间日期表达式
- * @param bool $timestamp 是否进行时间戳转换
- * @return mixed
- */
- protected function formatDateTime($format, $time = 'now', $timestamp = false)
- {
- if (empty($time)) {
- return;
- }
- if (false === $format) {
- return $time;
- } elseif (false !== strpos($format, '\\')) {
- return new $format($time);
- }
- if ($timestamp) {
- $dateTime = new DateTime();
- $dateTime->setTimestamp($time);
- } else {
- $dateTime = new DateTime($time);
- }
- return $dateTime->format($format);
- }
- /**
- * 检查时间字段写入
- * @access protected
- * @return void
- */
- protected function checkTimeStampWrite()
- {
- // 自动写入创建时间和更新时间
- if ($this->autoWriteTimestamp) {
- if ($this->createTime && !isset($this->data[$this->createTime])) {
- $this->data[$this->createTime] = $this->autoWriteTimestamp($this->createTime);
- }
- if ($this->updateTime && !isset($this->data[$this->updateTime])) {
- $this->data[$this->updateTime] = $this->autoWriteTimestamp($this->updateTime);
- }
- }
- }
- }
|