没有命名空间的类 yii yii\base yii\behaviors yii\caching yii\captcha yii\console yii\console\controllers yii\console\widgets yii\data yii\db yii\db\conditions yii\db\cubrid yii\db\cubrid\conditions yii\db\mssql yii\db\mssql\conditions yii\db\mysql yii\db\oci yii\db\oci\conditions yii\db\pgsql yii\db\sqlite yii\db\sqlite\conditions yii\di yii\filters yii\filters\auth yii\grid yii\helpers yii\i18n yii\log yii\mail yii\mutex yii\rbac yii\rest yii\test yii\validators yii\web yii\widgets

Class yii\validators\DateValidator

继承yii\validators\DateValidator » yii\validators\Validator » yii\base\Component » yii\base\BaseObject
实现yii\base\Configurable
可用版本自2.0
源码 https://github.com/yiichina/yii2/blob/api/framework/validators/DateValidator.php

DateValidator 校验这个属性是否是一个 $format 要求的格式的日期,时间戳,或者日期时间。

在指定 $locale 属性值后,它同样支持转换国际化时间。 类似 12 мая 2014 这种,当 $format 配置为 ICU 格式的时间字符串模式。

你还可以使用 $min$max 属性将日期范围限定在一个特定的区间。

在校验时间之外,这个校验器同样可以把日期输出为一个机器可读的时间戳格式, 你可以通过 $timestampAttribute 属性来配置输出的属性名。 对于哪些包含时间信息(不只是日期)的值,时区信息也会被自动调整。 输入的时区信息默认通过 $timeZone 属性指定, 输出的时区如果 $timestampAttributeFormat 为 null ,则默认是 UTC ,否则是 $timestampAttributeTimeZone。 如果你想避免时区转换,确保 $timeZone$timestampAttributeTimeZone 的值是一样的。

公共属性

隐藏继承的属性

属性类型描述被定义在
$attributeNames array 属性名称列表. yii\validators\Validator
$attributes array|string 将要被这个校验器校验的属性名,或者列表。如果多属性,请通过一个数组设置它们。 对于单属性,你可以使用一个字符串,也可以使用一个数组指定。 yii\validators\Validator
$behaviors yii\base\Behavior[] List of behaviors attached to this component yii\base\Component
$builtInValidators array List of built-in validators (name => class or configuration) yii\validators\Validator
$enableClientValidation boolean 是否启用这个校验器的客户端校验。 实际的校验过程是通过 clientValidateAttribute() 返回的 JS 代码来执行。 如果这个方法返回 null, 即使这个属性值为 true ,也不会执行任何客户端校验。 yii\validators\Validator
$except array|string 校验器不应该应用的情景。 对于多情景,请以一个数组的形式指定它们。对于单情景,你可以使用一个字符串或者一个数组。 yii\validators\Validator
$format string 要被校验的值应该符合的时间日期格式。 它可以是一个 [ICU manual](http://userguide. yii\validators\DateValidator
$isEmpty callable 用于替换默认的 isEmpty() 空值校验方法, 如果没有设置,将会使用 isEmpty() 做空值校验。 这个函数的声明应该为 function ($value), 它的返回值为一个代表这个值是否为空的布尔值。 yii\validators\Validator
$locale string 本地化时间日期转化的 locale ID 这个只有在 [PHP intl extension](http://php. yii\validators\DateValidator
$max integer|string 时间日期的上限,默认为 null ,代表无上限。 这个可以是一个 unix 时间戳,也可以是一个代表日期时间格式的字符串值。 如果这个属性是字符串, 将使用 $format 来格式化它。 yii\validators\DateValidator
$maxString string 用户友好的最大值,用于展示在错误消息中。 如果这个属性是 null, 将会使用未转换的 $max yii\validators\DateValidator
$message string 用户定义的错误消息。 它可以使用如下的占位符,并将会相应地被校验器替换: - {attribute}: 被校验的属性标签 - {value}: 被校验的属性值 注意:有一些校验器会引入其他的属性用于指定的校验条件未满足时的错误消息。 关于这些属性的具体详情,请参考具体的类 API 文档。 通常, 这些属性代表最重要的校验规则未满足时的所触发的主要错误消息。 yii\validators\Validator
$min integer|string 时间日期的下限,默认是 null,代表无下限。 这个可以是一个 unix 时间戳,也可以是一个代表日期时间格式的字符串值。 如果这个属性是字符串, 将使用 $format 来格式化它。 yii\validators\DateValidator
$minString string 用户友好的最小值,用于展示在错误消息中。 如果这个属性是 null, 将会使用未转换的 $min yii\validators\DateValidator
$on array|string 校验器被应用的情景。 对于多情景,请以一个数组的形式指定它们。对于单情景,你可以使用一个字符串或者一个数组。 yii\validators\Validator
$skipOnEmpty boolean 当被校验的属性值为 null 或者空字符串时, 是否该跳过这个校验规则。 yii\validators\Validator
$skipOnError boolean 当被校验的属性根据之前的校验规则已经有一些校验错误时,这个校验规则是否应该被跳过。 默认为 true。 yii\validators\Validator
$timeZone string 转化日期和时间值的时区。 这个可以是任意可以传递给函数 [date_default_timezone_set()](http://www. yii\validators\DateValidator
$timestampAttribute string 用于接受转换结果的属性名称。 当这个属性不为空,且校验成功的情况下, 指定的属性将会被赋值为转换结果。 这个可以同时为被校验的属性名。 在这种情况下,原始值在成功校验后,会被重写为时间戳值。 注意,当使用这个属性时,输入值将会被转换为一个 unix 时间戳, 默认是 UTC 时区,所以会有一个 input time zone 到 UTC 的时区转换。 当定义了 $timestampAttributeFormat , 你可以通过设置 $timestampAttributeTimeZone 为其他不同于 'UTC' 的值来控制这个转换。 yii\validators\DateValidator
$timestampAttributeFormat string 填充 $timestampAttribute 的格式。 这个格式可以同 $format 一样。 如果未设置,$timestampAttribute 将会接受一个 UNIX 时间戳。 如果 $timestampAttribute 未设置,这个属性将会被忽略。 yii\validators\DateValidator
$timestampAttributeTimeZone string 当填充 $timestampAttribute 属性时,使用的时区,默认为 UTC。 这个可以是任意可以传递给函数 [date_default_timezone_set()](http://www. yii\validators\DateValidator
$tooBig string 用户自定义错误消息当值大于 $max. yii\validators\DateValidator
$tooSmall string 用户自定义错误消息当值小于 $min. yii\validators\DateValidator
$type string 校验器的类型,意味着被校验的是一个日期,时间戳,或者时间日期值。 这个属性影响着 $format 的默认值, 当 $formatshort, medium, long, 或者 full 之一的intl短格式时,它会设置校验器的正确行为。 这个属性只有扩展 [PHP intl extension](http://php. yii\validators\DateValidator
$validationAttributes yii\validators\Validator
$when callable 一个PHP函数调用,它的返回值将会决定这个校验器是否被应用。 这个函数的声明应该为 function ($model, $attribute) ,其中 $model$attribute 代表被校验的模型和属性。 这个函数应该返回一个布尔值。 这个属性主要用于支持服务端条件校验。 如果这个属性没有被设置,这个校验器将会总是在服务端执行校验。 以下是一个示例,只有当前选择的国家为 USA 时,才会在服务端执行此校验器: `php function ($model) { return $model->country == Country::USA; } ` yii\validators\Validator
$whenClient string 这是一个 JS 函数,它的返回值将会决定校验器是否在客户端执行。 这个函数的声明应该为 function (attribute, value) , 其中 attribute 代表被要被校验的属性对象(参考: clientValidateAttribute()), value 是属性当前值。 这个属性主要用于支持客户端条件校验。 如果这个属性没有被设置,这个校验器将会总是在客户端执行校验。 以下是一个示例,只有当前选择的国家为 USA 时,才会在客户端执行此校验器: `javascript function (attribute, value) { return $('#country'). yii\validators\Validator

公共方法

隐藏继承的方法

方法描述被定义在
__call() Calls the named method which is not a class method. yii\base\Component
__clone() This method is called after the object is created by cloning an existing one. yii\base\Component
__construct() Constructor. yii\base\BaseObject
__get() Returns the value of a component property. yii\base\Component
__isset() Checks if a property is set, i.e. defined and not null. yii\base\Component
__set() Sets the value of a component property. yii\base\Component
__unset() Sets a component property to be null. yii\base\Component
addError() 添加指定属性的错误到模型对象中。 这是一个帮助方法用于执行消息的选择和国际化。 yii\validators\Validator
attachBehavior() Attaches a behavior to this component. yii\base\Component
attachBehaviors() Attaches a list of behaviors to the component. yii\base\Component
behaviors() Returns a list of behaviors that this component should behave as. yii\base\Component
canGetProperty() Returns a value indicating whether a property can be read. yii\base\Component
canSetProperty() Returns a value indicating whether a property can be set. yii\base\Component
className() Returns the fully qualified name of this class. yii\base\BaseObject
clientValidateAttribute() 返回可用于客户端校验的 JS 代码。 yii\validators\Validator
createValidator() 创建校验器对象。 yii\validators\Validator
detachBehavior() Detaches a behavior from the component. yii\base\Component
detachBehaviors() Detaches all behaviors from the component. yii\base\Component
ensureBehaviors() Makes sure that the behaviors declared in behaviors() are attached to this component. yii\base\Component
getAttributeNames() 返回去除开头 ! 的属性名称。 yii\validators\Validator
getBehavior() Returns the named behavior object. yii\base\Component
getBehaviors() Returns all behaviors attached to this component. yii\base\Component
getClientOptions() 返回客户端校验参数。 这个方法通常在 clientValidateAttribute() 中调用。 你可以改写这个方法用于修改传给客户端校验的参数。 yii\validators\Validator
getValidationAttributes() yii\validators\Validator
hasEventHandlers() Returns a value indicating whether there is any handler attached to the named event. yii\base\Component
hasMethod() Returns a value indicating whether a method is defined. yii\base\Component
hasProperty() Returns a value indicating whether a property is defined for this component. yii\base\Component
init() Initializes the object. yii\validators\DateValidator
isActive() 返回一个值代表当前校验器在当前情景和属性下是否是激活状态。 yii\validators\Validator
isEmpty() 检测指定的值是否为空。 如果它是一个 null,一个空的数组,或者一个空字符串,那么它会被认为是一个空值。 注意这个方法和 PHP 的 empty() 函数不同,当值为 0 时,它会返还 false 。(非空值) yii\validators\Validator
off() Detaches an existing event handler from this component. yii\base\Component
on() Attaches an event handler to an event. yii\base\Component
trigger() Triggers an event. yii\base\Component
validate() 校验一个指定的值。 你可以使用这个方法在数据模型上下文之外的地方校验一个值。 yii\validators\Validator
validateAttribute() 校验单个属性。 子类必须实现这个方法以实现具体的校验逻辑。 yii\validators\DateValidator
validateAttributes() 校验指定的对象。 yii\validators\Validator

受保护的方法

隐藏继承的方法

方法描述被定义在
formatMessage() 使用 I18N 格式化消息,或者只是简单的 strtr ,如果 \Yii::$app 不可用的话。 yii\validators\Validator
parseDateValue() 将日期字符串转换为 UNIX 时间戳。 yii\validators\DateValidator
validateValue() 校验一个值。 一个校验类可以实现这个方法,以支持在数据模型上下文之外的地方支持数据校验。 yii\validators\DateValidator

常量

隐藏继承的常量

常量描述被定义在
TYPE_DATE 'date' 常量,用于设置属性校验 $type 为日期值,以intl短格式校验 yii\validators\DateValidator
TYPE_DATETIME 'datetime' 常量,用于设置属性校验 $type 为时间日期值,以intl短格式校验 yii\validators\DateValidator
TYPE_TIME 'time' 常量,用于设置属性校验 $type 为时间戳值,以intl短格式校验 yii\validators\DateValidator

属性详情

$format 公共 属性

要被校验的值应该符合的时间日期格式。 它可以是一个 ICU manual 文档中描述的时间日期格式。

另外,这个属性可以是一个前缀为php: 的字符串,代表一个可以被PHP Datetime 类识别的时间日期格式。 更多支持的格式,请参考 http://php.net/manual/en/datetime.createfromformat.php

如果这个属性没有设置,默认值为 Yii::$app->formatter->dateFormat,更多详情,参考 yii\i18n\Formatter::$dateFormat。 自 2.0.8 起,默认值将由不同的格式化类所决定, 依赖 $type 的具体值:

以下是这个属性的示例值:

'MM/dd/yyyy' // date in ICU format
'php:m/d/Y' // the same date in PHP format
'MM/dd/yyyy HH:mm' // not only dates but also times can be validated

注意: 底层所使用的日期转换函数依赖具体的格式,如果你用 ICU 格式, 然后 PHP intl extension 扩展正确安装, 将使用 IntlDateFormatter 转换输入值。其他的情况,使用 PHP DateTime来转换。 IntlDateFormatter 的优势在于它可以转换国际化的世界格式,类似 12. Mai 2015 或者 12 мая 2014。 而 PHP 内置转换函数只能转换英语格式。PHP内置转换函数对输入更严格一些, 如果是格式 php:d.m.Y ,那么值 12.05.05将不会被PHP内置函数接受 ,但是 IntlDateFormatter 却可以以格式 dd.MM.yyyy 接受这个值。 如果你需要使用 IntlDateFormatter 你可以通过指定 minimum date 来避免这个问题。

public string $format null
$locale 公共 属性

本地化时间日期转化的 locale ID 这个只有在 PHP intl extension 安装的情况下才生效。 如果未设置,将使用 formatter, 参见 yii\i18n\Formatter::$locale

public string $locale null
$max 公共 属性 (自版本 2.0.4 可用)

时间日期的上限,默认为 null ,代表无上限。 这个可以是一个 unix 时间戳,也可以是一个代表日期时间格式的字符串值。 如果这个属性是字符串, 将使用 $format 来格式化它。

参见 $tooBig 当日期太大时,参考 tooBig 自定义错误消息。.

public integer|string $max null
$maxString 公共 属性 (自版本 2.0.4 可用)

用户友好的最大值,用于展示在错误消息中。 如果这个属性是 null, 将会使用未转换的 $max

public string $maxString null
$min 公共 属性 (自版本 2.0.4 可用)

时间日期的下限,默认是 null,代表无下限。 这个可以是一个 unix 时间戳,也可以是一个代表日期时间格式的字符串值。 如果这个属性是字符串, 将使用 $format 来格式化它。

参见 $tooSmall 当日期太小时,参考 tooSmall 自定义错误消息。.

public integer|string $min null
$minString 公共 属性 (自版本 2.0.4 可用)

用户友好的最小值,用于展示在错误消息中。 如果这个属性是 null, 将会使用未转换的 $min

public string $minString null
$timeZone 公共 属性

转化日期和时间值的时区。 这个可以是任意可以传递给函数 date_default_timezone_set() 调用的参数值。 例如: UTC, Europe/Berlin 或者 America/Chicago。 可用的时区值参考 php manual。 如果这个属性没有设置,将使用 yii\base\Application::$timeZone

public string $timeZone null
$timestampAttribute 公共 属性

用于接受转换结果的属性名称。 当这个属性不为空,且校验成功的情况下, 指定的属性将会被赋值为转换结果。

这个可以同时为被校验的属性名。 在这种情况下,原始值在成功校验后,会被重写为时间戳值。

注意,当使用这个属性时,输入值将会被转换为一个 unix 时间戳, 默认是 UTC 时区,所以会有一个 input time zone 到 UTC 的时区转换。 当定义了 $timestampAttributeFormat , 你可以通过设置 $timestampAttributeTimeZone 为其他不同于 'UTC' 的值来控制这个转换。

参见:

$timestampAttributeFormat 公共 属性 (自版本 2.0.4 可用)

填充 $timestampAttribute 的格式。 这个格式可以同 $format 一样。

如果未设置,$timestampAttribute 将会接受一个 UNIX 时间戳。 如果 $timestampAttribute 未设置,这个属性将会被忽略。

参见:

$timestampAttributeTimeZone 公共 属性 (自版本 2.0.4 可用)

当填充 $timestampAttribute 属性时,使用的时区,默认为 UTC

这个可以是任意可以传递给函数 date_default_timezone_set() 调用的参数值。 例如: UTC, Europe/Berlin 或者 America/Chicago。 可用的时区值参考 php manual

如果属性 $timestampAttributeFormat 未设置,这个属性也会被忽略。

参见 $timestampAttributeFormat.

$tooBig 公共 属性 (自版本 2.0.4 可用)

用户自定义错误消息当值大于 $max.

public string $tooBig null
$tooSmall 公共 属性 (自版本 2.0.4 可用)

用户自定义错误消息当值小于 $min.

public string $tooSmall null
$type 公共 属性 (自版本 2.0.8 可用)

校验器的类型,意味着被校验的是一个日期,时间戳,或者时间日期值。 这个属性影响着 $format 的默认值, 当 $formatshort, medium, long, 或者 full 之一的intl短格式时,它会设置校验器的正确行为。

这个属性只有扩展 PHP intl extension 安装时才生效。

这个属性可以设置为如下值:

  • TYPE_DATE - (默认)只接受日期值,这意味着不包括时间部分的日期值才有效。
  • TYPE_DATETIME - 接受时间日期值,即同时包含时间部分和日期部分。
  • TYPE_TIME - 接受时间戳值,即不包含日期信息。
public string $type self::TYPE_DATE

方法详情

init() 公共 方法

Initializes the object.

This method is invoked at the end of the constructor after the object is initialized with the given configuration.

public void init()
parseDateValue() 受保护 方法

将日期字符串转换为 UNIX 时间戳。

protected integer|false parseDateValue($value)
$value string

日期字符串。

return integer|false

一个合法的 UNIX 时间戳,如果转换失败,返回 false

validateAttribute() 公共 方法

校验单个属性。 子类必须实现这个方法以实现具体的校验逻辑。

public void validateAttribute($model, $attribute)
$model yii\base\Model

被校验的数据模型对象。

$attribute string

被校验的属性名称。

validateValue() 受保护 方法

校验一个值。 一个校验类可以实现这个方法,以支持在数据模型上下文之外的地方支持数据校验。

protected array|null validateValue($value)
$value mixed

被校验的数据值。

return array|null

错误消息,和可用于替换错误消息中占位符的参数。

if (!$valid) {
    return [$this->message, [
        'param1' => $this->param1,
        'formattedLimit' => Yii::$app->formatter->asShortSize($this->getSizeLimit()),
        'mimeTypes' => implode(', ', $this->mimeTypes),
        'param4' => 'etc...',
    ]];
}

return null;

对于这个例子 message 模板可以包含 {param1}, {formattedLimit}, {mimeTypes}, {param4}

如果数据是合法的,返回 null。

throws yii\base\NotSupportedException

如果校验器不支持模型外数据校验。