Làm cách nào để đặt xác thực ngày trong PHP?

Khi nói đến xác thực ngày tháng, Laravel bao gồm hầu hết các trường hợp xác thực ngày tháng. Tất nhiên, đôi khi bạn sẽ cần cài đặt một số gói bổ sung để thực hiện xác thực cụ thể, nhưng nhìn chung, một loạt quy tắc xác thực gốc của Laravel là đủ. Trong bài viết này, tôi sẽ tổng quan về các trường hợp xác thực ngày phổ biến nhất

Mục lục

Làm cách nào để xác thực ngày trong Laravel?

Nếu bạn cần kiểm tra đầu vào cho một ngày hợp lệ thì bạn nên sử dụng trình xác nhận ngày

$request->validate[   
    'date_field' => 'date' 
];   

Nó có nghĩa là gì bởi "ngày hợp lệ"? . Trình xác thực này kiểm tra xem giá trị đã cho là một chuỗi hay số, sau đó chuyển giá trị đó tới hàm PHP strtotime[] và kiểm tra xem hàm này có thể phân tích giá trị thành dấu thời gian Unix hay không. Nếu kết quả của những lần kiểm tra này là dương thì trình xác thực sẽ phân tích giá trị bằng hàm PHP date_parse[] và kiểm tra xem giá trị được phân tích cú pháp có phải là ngày Gregorian hợp lệ hay không bằng cách sử dụng hàm PHP checkdate[]. Trong trường hợp giá trị đã cho là một phiên bản của trình xác thực DateTimeInterface [đối tượng DateTime hoặc DateTimeImmutable] sử dụng trả về sớm với kết quả xác thực dương

public function validateDate[$attribute, $value]
{
    if [$value instanceof DateTimeInterface] {
        return true;
    }

    try {
        if [[! is_string[$value] && ! is_numeric[$value]] || strtotime[$value] === false] {
            return false;
        }
    } catch [Exception $e] {
            return false;
    }

    $date = date_parse[$value];

    return checkdate[$date['month'], $date['day'], $date['year']];
}

Làm cách nào để xác thực ngày giờ cụ thể trong Laravel?

Khi bạn cần xác thực trường đầu vào cho một ngày hoặc giờ cụ thể thì bạn nên sử dụng trình xác thực date_equals

$request->validate[   
    'date_field' => 'date_equals:11/30/2022' 
];   

Đây là một ví dụ với xác thực thời gian cụ thể

$request->validate[   
    'date_field' => 'date_equals:15:00' 
];   

Và một ví dụ nữa với ngày giờ cụ thể

$request->validate[   
    'date_field' => 'date_equals:11/30/2022 15:00' 
];   

Làm cách nào để xác thực phạm vi ngày trong Laravel?

Đôi khi, bạn cần kiểm tra giá trị đầu vào ngày cho một phạm vi ngày cụ thể hoặc để kiểm tra xem giá trị đầu vào có sau hay trước một ngày cụ thể hay không. Để làm điều đó, bạn có thể chỉ định ngày tối thiểu và tối đa với các trình xác thực Laravel này. trước, before_or_equals, sau, after_or_equals

Dưới đây là một ví dụ về xác thực ngày bằng cách sử dụng trình xác thực trước

$request->validate[   
    'date_field' => 'before:11/30/2022' 
];   

Và tất nhiên, bạn có thể chỉ định cả ngày và giờ

$request->validate[   
    'date_field' => 'before_or_equals:11/30/2022 15:00' 
];  

Hoặc chỉ là thời gian sẽ làm việc quá

$request->validate[   
    'date_field' => 'after:15:00' 
];  

Để xác thực phạm vi ngày, bạn có thể sử dụng cả trình xác thực before/before_or_equals và after/after_or_equals

________số 8

$request->validate[   
    'date_field' => 'after_or_equals:11/01/2022|before_or_equals:11/30/2022' 
];  

Khi bạn có ba trường – trường đầu tiên dành cho ngày bắt đầu, trường thứ hai dành cho ngày kết thúc và bạn muốn kiểm tra xem giá trị đầu vào thứ ba có nằm trong khoảng từ ngày bắt đầu đến ngày kết thúc hay không, thì trong before/before_or_equals/after/ . Đây là một ví dụ

public function validateDate[$attribute, $value]
{
    if [$value instanceof DateTimeInterface] {
        return true;
    }

    try {
        if [[! is_string[$value] && ! is_numeric[$value]] || strtotime[$value] === false] {
            return false;
        }
    } catch [Exception $e] {
            return false;
    }

    $date = date_parse[$value];

    return checkdate[$date['month'], $date['day'], $date['year']];
}
0

Làm cách nào để xác thực định dạng ngày trong Laravel?

Nếu người dùng phải cung cấp ngày ở định dạng cụ thể thì bạn có thể xác thực ngày đó bằng cách sử dụng trình xác thực định dạng ngày

public function validateDate[$attribute, $value]
{
    if [$value instanceof DateTimeInterface] {
        return true;
    }

    try {
        if [[! is_string[$value] && ! is_numeric[$value]] || strtotime[$value] === false] {
            return false;
        }
    } catch [Exception $e] {
            return false;
    }

    $date = date_parse[$value];

    return checkdate[$date['month'], $date['day'], $date['year']];
}
1

Trình xác thực này hỗ trợ được hỗ trợ bởi phương thức createFromFormat[] của lớp DateTime của PHP

Bạn không nên sử dụng cùng với date_format vì cái thứ hai có kiểm tra ngày hợp lệ. Hãy xem nó hoạt động như thế nào

public function validateDate[$attribute, $value]
{
    if [$value instanceof DateTimeInterface] {
        return true;
    }

    try {
        if [[! is_string[$value] && ! is_numeric[$value]] || strtotime[$value] === false] {
            return false;
        }
    } catch [Exception $e] {
            return false;
    }

    $date = date_parse[$value];

    return checkdate[$date['month'], $date['day'], $date['year']];
}
2

Laravel cố gắng tạo một đối tượng DateTime từ một định dạng đã chỉ định. Nếu đối tượng DateTime được tạo thành công, thì trình xác thực sẽ so sánh đối tượng đó được định dạng theo định dạng đã chỉ định với giá trị đã cho. Nếu người dùng đã nhập ngày Gregorian không hợp lệ nhưng định dạng của nó giống như đã chỉ định, thì phương thức createFromFormat[] sẽ tạo một ngày khác được tính toán lại theo lịch Gregorian và sẽ không vượt qua bước kiểm tra này

public function validateDate[$attribute, $value]
{
    if [$value instanceof DateTimeInterface] {
        return true;
    }

    try {
        if [[! is_string[$value] && ! is_numeric[$value]] || strtotime[$value] === false] {
            return false;
        }
    } catch [Exception $e] {
            return false;
    }

    $date = date_parse[$value];

    return checkdate[$date['month'], $date['day'], $date['year']];
}
3

Làm cách nào để xác thực thời gian trong Laravel?

Để xác thực thời gian, bạn cũng nên sử dụng trình xác thực date_format và chỉ định bất kỳ định dạng thời gian nào bạn cần. Ví dụ

public function validateDate[$attribute, $value]
{
    if [$value instanceof DateTimeInterface] {
        return true;
    }

    try {
        if [[! is_string[$value] && ! is_numeric[$value]] || strtotime[$value] === false] {
            return false;
        }
    } catch [Exception $e] {
            return false;
    }

    $date = date_parse[$value];

    return checkdate[$date['month'], $date['day'], $date['year']];
}
4

Làm cách nào để xác thực thời gian ở định dạng AM/PM trong Laravel?

Định dạng AM hoặc PM được hỗ trợ bởi lớp DateTime của PHP, vì vậy bạn có thể dễ dàng xác thực nó bằng trình xác thực date_format

public function validateDate[$attribute, $value]
{
    if [$value instanceof DateTimeInterface] {
        return true;
    }

    try {
        if [[! is_string[$value] && ! is_numeric[$value]] || strtotime[$value] === false] {
            return false;
        }
    } catch [Exception $e] {
            return false;
    }

    $date = date_parse[$value];

    return checkdate[$date['month'], $date['day'], $date['year']];
}
5

Làm cách nào để vượt qua xác thực ngày nếu giá trị đầu vào là null trong Laravel?

Khi bạn cần chuyển xác thực dữ liệu nếu trường ngày trống và chỉ xác thực trường đó nếu người dùng đã nhập nội dung nào đó vào trường đó, thì bạn nên sử dụng trình xác thực nullable

public function validateDate[$attribute, $value]
{
    if [$value instanceof DateTimeInterface] {
        return true;
    }

    try {
        if [[! is_string[$value] && ! is_numeric[$value]] || strtotime[$value] === false] {
            return false;
        }
    } catch [Exception $e] {
            return false;
    }

    $date = date_parse[$value];

    return checkdate[$date['month'], $date['day'], $date['year']];
}
6

Làm cách nào để xác thực múi giờ trong Laravel?

Bạn có thể kiểm tra xem chuỗi đã cho có phải là múi giờ được PHP hỗ trợ hay không bằng cách sử dụng trình xác thực múi giờ. Trình xác thực này chỉ cần kiểm tra xem chuỗi đã cho có nằm trong mảng được trả về bởi hàm timezone_identifiers_list[] PHP không. Đây là một ví dụ

public function validateDate[$attribute, $value]
{
    if [$value instanceof DateTimeInterface] {
        return true;
    }

    try {
        if [[! is_string[$value] && ! is_numeric[$value]] || strtotime[$value] === false] {
            return false;
        }
    } catch [Exception $e] {
            return false;
    }

    $date = date_parse[$value];

    return checkdate[$date['month'], $date['day'], $date['year']];
}
7

Làm cách nào để xác thực dấu thời gian Unix trong Laravel?

Không có trình xác thực nào để xác thực dấu thời gian Unix trong Laravel. Nhưng chúng ta có thể nghĩ về loại dấu thời gian Unix thực sự là gì. Nó là một số nguyên không dấu. Để xác thực một số nguyên không dấu, chúng ta có thể kiểm tra xem một giá trị có phải là số nguyên không và liệu nó có lớn hơn 0 không. Vì vậy, chúng tôi có thể sử dụng trình xác thực số nguyên và tối thiểu

public function validateDate[$attribute, $value]
{
    if [$value instanceof DateTimeInterface] {
        return true;
    }

    try {
        if [[! is_string[$value] && ! is_numeric[$value]] || strtotime[$value] === false] {
            return false;
        }
    } catch [Exception $e] {
            return false;
    }

    $date = date_parse[$value];

    return checkdate[$date['month'], $date['day'], $date['year']];
}
8

Làm cách nào để xác thực ngày nếu nó có số phút cụ thể?

Đôi khi chúng ta cần kiểm tra xem ngày có phút cụ thể không. Ví dụ: chúng tôi có hai ngày. 2022-11-11 09. 15 và 2022-11-11 09. 30. Và chúng ta cần kiểm tra xem ngày có phút thứ 15 hay phút thứ 45. Vì vậy, trong trường hợp này, ngày đầu tiên sẽ hợp lệ và ngày thứ hai sẽ không hợp lệ. Để xác thực ngày theo cách này, bạn cần cài đặt gói vdhicts/laravel-validation-rules bằng lệnh Composer

public function validateDate[$attribute, $value]
{
    if [$value instanceof DateTimeInterface] {
        return true;
    }

    try {
        if [[! is_string[$value] && ! is_numeric[$value]] || strtotime[$value] === false] {
            return false;
        }
    } catch [Exception $e] {
            return false;
    }

    $date = date_parse[$value];

    return checkdate[$date['month'], $date['day'], $date['year']];
}
9

Và sau đó sử dụng quy tắc xác thực DateHasSpecificMinutes. Định dạng ngày mặc định là Y-m-d H. i, vì vậy nếu ngày của bạn ở định dạng khác thì hãy chuyển nó làm đối số thứ hai. Dưới đây là các ví dụ

$request->validate[   
    'date_field' => 'date_equals:11/30/2022' 
];   
0

Hoặc nếu bạn sử dụng không sử dụng định dạng ngày mặc định

$request->validate[   
    'date_field' => 'date_equals:11/30/2022' 
];   
1

Làm cách nào để xác thực ngày theo tiêu chuẩn ISO 8601 trong Laravel?

Đó là ngày nào. 01/11/12? . Nó có thể là một vấn đề khi các hệ thống giao tiếp với nhau sử dụng các định dạng ngày khác nhau. Đó là lý do tiêu chuẩn ISO 8601 ra đời

Để xác thực ngày theo tiêu chuẩn ISO 8601, bạn có thể sử dụng gói penance316/laravel-iso8601-validator. Để cài đặt nó chạy lệnh Composer

$request->validate[   
    'date_field' => 'date_equals:11/30/2022' 
];   
2

Sau đó, bạn nên thêm trình xác thực cần thiết vào phương thức khởi động của ứng dụng/Nhà cung cấp/AppServiceProvider. php

Làm cách nào để thêm xác thực ngày trong PHP?

Giá trị ngày tháng có thể được xác thực bằng cách sử dụng nhiều hàm trong PHP. Một là hàm checkdate[] và một là hàm createFromFormat[] thuộc lớp DateTime của PHP .

Làm thế nào chúng ta có thể xác nhận ngày?

Xác thực ngày với ngày. phương thức parse[] được sử dụng để kiểm tra xem ngày đã cho là hợp lệ hay không . Hàm trả về NaN nếu ngày đã cho không hợp lệ hoặc nếu không thì nó trả về số giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970. Bằng cách này, chúng tôi có thể kiểm tra tính xác thực của ngày đã cho.

Chủ Đề