如何从输入中输入mysql中的时间戳

问题描述 投票:3回答:5

我需要在Laravel应用程序的输入中插入MySQL中的Timestamp

来自我的输入的数据是这种格式12/27/2017 MM/DD/YYYY我怎么能把它转换成这种格式Y-m-d H:i:s

任何替代方案都非常受欢迎,比如来自我们使用的输入的输入数据,我可以获得timestamp格式的数据。

最后,我需要排序数据order by date

php mysql laravel timestamp
5个回答
5
投票

如果你想用Laravel方式做,你可以使用mutatorCarbon。这是一个模型的例子:

use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model

class Post extends Model {

    protected $dates = ['date'];


    public function setDateAttribute($value)
    {
        $this->attributes['date'] = Carbon::createFromFormat('d/m/Y', $value);
    }
}

现在当您更新或创建帖子时,date属性将自动转换。所以你可以像这样保存它:

$post = new Post(); 
$post->date = '16/12/2017';
$post->save();

2
投票

您可以使用DateTime:

$inputDate = \DateTime::createFromFormat('m/d/Y', '12/27/2017');
$formatedDate = $inputDate->format('Y-m-d H:i:s');

1
投票

至于我,我以这种方式完成了日期转换,例如发票。我希望这可以通过PHP完成。

$input_date = "12/15/2017"; // input in MM/DD/YYYY
$output_date = date('Y-m-d H:i:s',strtotime($input_date)); //set output to 2017-12-15 00:00:00
echo $output_date; //produce output

它会生成以下结果

2017-12-15 00:00:00

我希望这会奏效。如果您只想要日期,可以根据您的目的省略H:i:s。谢谢。


0
投票
$date=date_create("12/27/2017");
$rawDate =  date_format($date,"Y/m/d");// Produced - 2017/12/27
echo  str_replace('/','-',$rawDate ); // Output - 2017-12-27
  • 添加H:i:s,如果没有时间只是在日期结束时添加00:00:00以空格开头。
  • 如果您正在处理Laravel为每个表创建的created_atupdated_at,您必须将00:00:00添加到日期结束,以便从相应日期开始获取所有数据

0
投票

如果我们想要输入的日期格式与时间戳接受的格式不同,这个解决方案对我有用

Laravel的做法是

  protected $fillable = ['organization_name', 'job_apply_link', 'job_description', 'city_id', 'province_id', 'sector_id', 'image_file', 'test_id', 'newspaper_id', 'catagory_id', 'slug', 'meta_keywords', 'meta_description', 'job_title', 'created_at'];  

 public function setCreatedAtAttribute($value)
    {
        $inputDate = \DateTime::createFromFormat('m/d/Y', $value);
        $formatedDate = $inputDate->format('Y-m-d H:i:s');
        $this->attributes['created_at'] = $formatedDate;

    }
© www.soinside.com 2019 - 2024. All rights reserved.