验证Laravel模型中的日期和时间

时间:2016-05-09 21:47:36

标签: php laravel datetime format

我有一个datepicker插件来弹出一个日历视图,允许用户选择日期+时间,但它产生的格式是:

May 9, 2016 8:30 AM

存储到数据库时,我需要格式为:

2016-09-05 08:30:00

在我的申请模型中,我有:

public function save(Request $request)
{
    Entry::create($request->all());
    return redirect('entries');
}

这会保存用户表单输入,但由于格式不正确,它不会保存日期时间。我尝试创建一个新函数来格式化日期,然后再将其输入数据库。

public function formatDate($data)
{
    $returnDate = DateTime::createFromFormat('Y-d-m G:i:s', $data);
    return $returnDate->format('Y-d-m G:i:s');
}

但是当我从save函数调用该函数时,它会显示未定义的函数。我做错了什么或者正确的方法是什么? (抱歉,我还是新人 - 谢谢你)。

4 个答案:

答案 0 :(得分:2)

您必须为DateTime::createFromFormat()设置正确的格式。从格式创建意味着,您必须告诉模式以匹配给定日期中的任何信息。对于您的日期,模式为:

DateTime::createFromFormat('F j, Y g:i A', $data);

以下是演示:https://eval.in/567629

所有格式选项的列表:http://php.net/manual/en/function.date.php

答案 1 :(得分:1)

这两个功能都在模型中? 如果是这样,你打算如何调用formatDate函数?

您可以使用匿名函数,尝试:

$formatted_date = function() use ($data) { $returnDate = DateTime::createFromFormat('Y-d-m G:i:s', $data); return $returnDate->format('Y-d-m G:i:s'); };

在您的控制器或模型中。

答案 2 :(得分:0)

在Laravel中,created_at和updated_at被转换为Carbon对象

https://laravel.com/docs/5.2/eloquent-mutators#date-mutators

有了你的日期,你可以做同样的事情

class User extends Model { /** * The attributes that should be mutated to dates. * * @var array */ protected $dates = ['created_at', 'updated_at', 'your_date']; }

然后,在保存日期时,它将被转换为正确的格式。

尝试一下,让我们知道你是怎么过的!

答案 3 :(得分:0)

例如;

template<class T> class Point3 {
    T x, y, z;
public:
    Point3();
    void print() const;    
}; 
template<class T, class U> class ColPoint3 :public Point3<T> {
    U color;
public:
    ColPoint3();
    void print() const;
};
template<class T, class U, class V> class ColVol :public ColPoint3<T, U> {
    V volume;
public:
    ColVol();
    void print() const;
    V get_volume() {
        return volume;
    }
};    
int main() {
    const int n = 2;
     ColVol<double, int, int>  *f;
    f = new ColVol<double, int, int>[n];
    for (int i = 0; i < n; i++) {
        f[i];
    }
            int temp;
    for (int k = 0; k < n; k++) {
        if (f[k].get_color() >= 1 || f[k].get_color() <= 10) {
            for (int i = 0; i < n - 1; i++) 
                for (int j = 0; j < n - i + 1; j++) 
                    if (f[j].get_volume() > f[j + 1].get_volume()) {
                        temp = f[j].get_volume();
                        f[j].get_volume() = f[j+1].get_volume();
                        f[j + 1].get_volume() = temp;   

                    }
                 }
            }
}