【问题标题】:laravel-7 : date_format jalali calender validationlaravel-7 : date_format jalali 日历验证
【发布时间】:2020-12-20 21:58:18
【问题描述】:

我从用户输入中获得了 DateTime 格式:

"Y/m/d H:i"

这是我的验证:

$request->validate([
            'deadline' => 'required|date_format:Y/m/d H:i'
        ]);

但问题是我正在使用 Jalali 日历,所以 jalali 的第 6 个月有 31 天。用户输入将是这样的:

1400/06/31

现在验证器将抛出错误,因为格鲁吉亚日历的第 6 个月没有 31 天。

我应该如何验证这个日期?

【问题讨论】:

    标签: laravel datetime datetime-format laravel-7 laravel-validation


    【解决方案1】:

    尝试使用现有的 laravel 验证规则,

    php artisan make:rule [JalaliDateValidation]
    

    如果您使用的是morilog/jalali,请尝试使用检查日期功能

    // Check jalali date
    \Morilog\Jalali\CalendarUtils::checkDate(1391, 2, 30, true); // true
    
    // Check jalali date
    \Morilog\Jalali\CalendarUtils::checkDate(2016, 5, 7); // false
    
    // Check gregorian date
    \Morilog\Jalali\CalendarUtils::checkDate(2016, 5, 7, false); // true
    

    【讨论】:

    • 如何将用户的输入日期更改为年月日?没有安全问题。非常感谢。
    • 当你收到用户的请求时,他/她发送了 Y/m/d H:i 之类的东西,你可以拆分它的值然后检查日期,很明显你只需要验证年份、月份和日期。所以首先拆分输入,然后用 checkDate 函数验证它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    • 2020-09-04
    • 1970-01-01
    • 2015-11-07
    • 2019-06-25
    • 1970-01-01
    相关资源
    最近更新 更多