【问题标题】:how to enter time-stamps in mysql from an input如何从输入中在mysql中输入时间戳
【发布时间】:2018-05-30 11:07:27
【问题描述】:

我需要从 Laravel 应用程序的输入中将时间戳插入 MySQL 中

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

任何替代方案都受到高度赞赏,例如从我们使用的输入中传递数据,因此我可以获取 timestamp 格式的数据。

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

【问题讨论】:

  • 您的输入数据没有时间部分。那么你希望在什么时候出现在结果中?
  • 时间可以是00-00-00

标签: php mysql laravel timestamp


【解决方案1】:

如果你想用 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();

【讨论】:

  • 我需要将此格式“d/m/Y”转换为时间戳格式,以创建可以插入数据库的自定义“d/m/Y”格式
  • 我明白了。我的答案中的代码应该可以满足您的需求。你试过了吗?
【解决方案2】:

您可以使用日期时间:

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

【讨论】:

  • 您正在使用$inputDate$date。它应该是同一个变量。
  • 如果我们使用质量分配并且需要在模型中使用 laravel 方式使用 mutators 来完成这项工作怎么办?
  • 这不在问题之列,但如果您愿意,请使用 Andriy 的答案并结合我的答案。它应该可以正常工作。
【解决方案3】:

就我而言,我以这种方式完成了日期转换,例如制作发票。我希望这可以通过 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。谢谢。

【讨论】:

  • 它工作得很好,但我正在寻找 laravel 在模型中这样做的方式
【解决方案4】:
$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 添加到结束日期以获取所有数据以相应日期开始强>

【讨论】:

  • 我不得不编辑这个和你的另一个答案。您知道块引用的用途,因此请不要将它们用于此目的。
【解决方案5】:

如果我们希望输入的日期格式与时间戳接受的格式不同,此解决方案对我有用

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;

    }

【讨论】:

    猜你喜欢
    • 2015-05-14
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-24
    • 1970-01-01
    相关资源
    最近更新 更多