Nova 提供两种类型的日期字段:Date
和 DateTime
。正如你可能猜到的那样,Date
字段不存储时间信息,而 DateTime
字段存储
use Laravel\Nova\Fields\Date;
use Laravel\Nova\Fields\DateTime;
Date::make('Birthday'),
DateTime::make('Created At'),
默认情况下,Nova 会为 Date
字段设置最小“步长”为 1 天,为 DateTime
字段设置最小“步长”为 1 秒。你可以通过向字段的 step
方法提供一个整数或 Carbon\CarbonInterval
来修改这两个字段的“步长”值
use Carbon\CarbonInterval;
Date::make('Expired On')->step(7),
Date::make('Expired On')->step(CarbonInterval::weeks(1)),
DateTime::make('Published At')->step(60),
DateTime::make('Published At')->step(CarbonInterval::minutes(1)),
有时你可能希望明确定义 Date
或 DateTime
字段的最小值和最大值。这可以通过将一个有效的日期表达式、strtotime
支持的日期格式或 Carbon\CarbonInterface
的一个实例传递给这些字段的 min
和 max
方法来实现
use Carbon\Carbon;
Date::make('Expired On')
->min('tomorrow')
->max('next week'),
Date::make('Expired On')
->min(Carbon::tomorrow())
->max(Carbon::today()->addWeek(1)),
默认情况下,Nova 用户将始终看到以应用程序的“服务器端”时区显示的日期,该时区由应用程序的 config/app.php
配置文件中的 timezone
配置选项定义。
有时你可能希望明确定义 Nova 用户的时区,而不是使用应用程序的时区配置。例如,你的应用程序可能允许用户选择自己的时区,以便即使在世界各地旅行时,他们也能始终看到一致的日期时区。
要实现这一点,你可以使用 Nova::userTimezone
方法。通常,你应该在应用程序的 NovaServiceProvider
的 boot
方法中调用此方法
use Laravel\Nova\Nova;
use Illuminate\Http\Request;
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
parent::boot();
Nova::userTimezone(function (Request $request) {
return $request->user()?->timezone;
});
}