elfuvo / yii2-date-compare
根据时区比较日期
0.1.2
2021-02-16 10:18 UTC
Requires
- php: >=7.4.0
- yiisoft/yii2: ~2.0.12
Requires (Dev)
- codeception/codeception: ^4.0
- codeception/module-asserts: ^1.2
- codeception/module-cli: ^1.0
This package is auto-updated.
Last update: 2024-09-16 18:53:28 UTC
README
要求
- PHP >=7.4
安装
通过以下方式安装此扩展:通过 composer。
运行以下命令之一:
php composer.phar require --prefer-dist elfuvo/yii2-date-compare "~0.1.0"
或者
"elfuvo/yii2-date-compare": "~0.1.0"
将以下内容添加到您的 composer.json
文件的 "require" 部分。
配置
在应用程序配置文件中设置 formatter 的 defaultTimeZone
(数据库时区)和 timeZone
(应用程序时区)。
[ 'components' => [ 'formatter' => [ 'class' => \yii\i18n\Formatter::class, 'defaultTimeZone' => 'UTC', // database timezone 'timeZone' => 'Europe/Moscow', // application time zone ], ], ];
使用方法
将 DateCompareActiveQueryTrait
添加到您的 ActiveQuery 类中。然后在使用选择时使用 where
函数。
Custom::find()->andCompareDate('>', Custom::tableName().'.[[createdAt]]', $model->dateFrom); Custom::find()->orCompareTime('<=', Custom::tableName().'.[[createdAt]]', $model->dateTimeFrom); Custom::find()->orWhere([ 'AND', ['>=', Custom::tableName().'.[[createdAt]]', DateConvertHelper::toDefaultTime($model->dateTimeFrom)], ['<=', Custom::tableName().'.[[createdAt]]', DateConvertHelper::toDefaultTime($model->dateTimeTo)], ]);
在过滤器视图中必须使用 yii formatter。
$form->field($model, 'dateFrom')->textInput(['value' => Yii::$app->formatter->asDate($model->dateFrom, 'dd.MM.yyyy')]);
您可以使用 DateValueWidget
进行日期格式化。
$form->field($model, 'dateFrom')->widget([ 'class'=> DateValueWidget::class, 'format' =>'dd.MM.yyyy HH:mm' ]);
您可以在容器定义中为 DateValueWidget
定义默认日期格式。
[ 'containers' => [ 'definitions' =>[ \elfuvo\dateCompare\widgets\DateValueWidget::class =>[ 'class' => \elfuvo\dateCompare\widgets\DateValueWidget::class, 'format' => 'dd/MM/yyyy', ], ], ] ];