比较 mm/yy 日期的输入字段
Compare input fields of dates of just mm/yy
我有两个输入字段,用户可以在其中输入请求的日期 mm/yy。一个字段是从,另一个是到。在后端,我希望能够转换这些字段,以便进行日期比较。我知道如果我制定一些非常严格的规则,那么我 100% 的时间都以我可以使用 Date 或 strtotime 的确切格式获得它并获得我需要的东西。我宁愿制定更宽松的规则,因为有些人可能会输入 mm-yy、mm-yyyy、mm/yyyy、m/yy 等
我的问题是,如果它可能以多种格式出现,是否有任何转换方法,因为我知道用户并不总是遵循推荐的格式。我正在 laravel 应用程序中执行此操作,因此 Carbon 可能也有一些方法可以做到这一点。
谢谢
Carbon 支持 PHP supports 的所有日期格式。因此,"Localized Notations" 下列出的任何格式都可用于创建有效日期。例如:
use Carbon\Carbon;
$date = new Carbon('2008-6');
$date = new Carbon('2008-06');
$date = new Carbon('June 2008');
$date = new Carbon('2008 June');
如果您想支持任何其他格式,可以使用 Carbon::createFromFormat
方法从给定格式创建日期。您可以创建一个新的 class 来支持多种新格式,例如:
<?php
namespace App\Traits;
use Carbon\Carbon;
use InvalidArgumentException;
class MonthYearParser
{
const SUPPORTED_FORMATS = [
'm-y',
'm-Y',
'm/y',
'm/Y',
];
public static function convertYearMonthToDate(string $input)
{
foreach(self::SUPPORTED_FORMATS as $format) {
try {
$date = Carbon::createFromFormat($format, $input);
return $date;
} catch (InvalidArgumentException $e) {
}
}
throw new InvalidArgumentException("Input is not in a valid year-month format");
}
}
然后您可以在 custom validation rule 或控制器中使用此 class 作为:
MonthYearParser::convertYearMonthToDate('6/2008')
我有两个输入字段,用户可以在其中输入请求的日期 mm/yy。一个字段是从,另一个是到。在后端,我希望能够转换这些字段,以便进行日期比较。我知道如果我制定一些非常严格的规则,那么我 100% 的时间都以我可以使用 Date 或 strtotime 的确切格式获得它并获得我需要的东西。我宁愿制定更宽松的规则,因为有些人可能会输入 mm-yy、mm-yyyy、mm/yyyy、m/yy 等
我的问题是,如果它可能以多种格式出现,是否有任何转换方法,因为我知道用户并不总是遵循推荐的格式。我正在 laravel 应用程序中执行此操作,因此 Carbon 可能也有一些方法可以做到这一点。
谢谢
Carbon 支持 PHP supports 的所有日期格式。因此,"Localized Notations" 下列出的任何格式都可用于创建有效日期。例如:
use Carbon\Carbon;
$date = new Carbon('2008-6');
$date = new Carbon('2008-06');
$date = new Carbon('June 2008');
$date = new Carbon('2008 June');
如果您想支持任何其他格式,可以使用 Carbon::createFromFormat
方法从给定格式创建日期。您可以创建一个新的 class 来支持多种新格式,例如:
<?php
namespace App\Traits;
use Carbon\Carbon;
use InvalidArgumentException;
class MonthYearParser
{
const SUPPORTED_FORMATS = [
'm-y',
'm-Y',
'm/y',
'm/Y',
];
public static function convertYearMonthToDate(string $input)
{
foreach(self::SUPPORTED_FORMATS as $format) {
try {
$date = Carbon::createFromFormat($format, $input);
return $date;
} catch (InvalidArgumentException $e) {
}
}
throw new InvalidArgumentException("Input is not in a valid year-month format");
}
}
然后您可以在 custom validation rule 或控制器中使用此 class 作为:
MonthYearParser::convertYearMonthToDate('6/2008')