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;
});
}