Nova 提供 2 种日期字段: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 来修改这两个字段的 step 值:
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;
/**
* 启动任何应用程序服务。
*
* @return void
*/
public function boot()
{
parent::boot();
Nova::userTimezone(function (Request $request) {
return $request->user()?->timezone;
});
}