elfuvo/yii2-date-compare

根据时区比较日期

安装: 2

依赖: 0

建议者: 0

安全: 0

星星: 1

关注者: 1

分支: 0

开放问题: 0

类型:yii2-extension

0.1.2 2021-02-16 10:18 UTC

This package is auto-updated.

Last update: 2024-09-16 18:53:28 UTC


README

Latest Stable Version Build Total Downloads License

要求

  • 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',
            ],
        ],  
    ]
];