php - Laravel保存的输入字段:仅添加日期时存储日期时间
问题描述
目标:
- 有两列(日期时间)保存一个只接受日期的输入字段
我希望从用户只能在文本字段中放置日期的文本字段中保存开始日期11/11/2021 00:00:00
和结束日期11/12/2021 23:59:59
(只能更改日期):
<div class="row" id="custom_date">
<div class="col-md-4">
<p class="font-weight-bold">From:</p>
</div>
<div class="col-md-8">
<input type="date" id="custom_start_datetime" name="custom_start_datetime">
</div>
<div class="col-md-4">
<p class="font-weight-bold">To:</p>
</div>
<div class="col-md-8">
<input type="date" id="custom_end_datetime" name="custom_end_datetime">
</div>
</div>
我的商店功能片段:
$shift->effective_start_datetime = $request_add->input('effective_start_datetime');
$shift->effective_end_datetime = $request_add->input('effective_end_datetime');
上面的代码给出了一个错误,因为该行在timestamp without time zone
并且它从文本字段中获取数据,这些数据只包含日期而不是时间。
我可以在我的功能代码中更改什么以保存日期,但它可以自动保存为 h/m/ s00:00:00
格式?start_datetime
23:59:59
end_datetime
例如,如果我在两个文本字段中输入,08/11/2021
它将08/13/2021
被保存为:08/11/2021 00:00:00
和08/13/2021 23:59:59
解决方案
您可以使用 Carbon 类来操作您的日期,因此,如果您想放置时间,您可以使用parse
method 和 use startOfDay
and endOfDay
methods 。
例子:
$startDate = Carbon::parse($firstDate)->startOfDay(); // Will return a Carbon Instance at 00:00:00
$endDate = Carbon::parse($secondDate)->endOfDay(); // Will return a Carbon Instance at 23:59:59
这些方法将解决您的问题,如果您需要时区,您可以使用andtoISOString
之后的方法,这是 API 响应的默认格式。startOfDay
endOfDay
$endDate = Carbon::parse($secondDate)->endOfDay()->toISOString(); // 2021-08-12T23:21:54.788279Z
推荐阅读
- c++ - 如何以特定顺序将数字存储在两个数组中?
- sql - SQL获取一个单词只出现一次的列中的字段
- dm-script - 4D 数据选择器工具 (2D x 2D)
- python - 具有特定条件的时间戳的 UniqueID
- vim - Vim 打开终端的配置文件与默认配置不同
- angular - Can we send value as Y if checkbox is checked and value as N if checkbox is unchecked in angular?
- python - heroku ps:scale web=1 缩放测功机...找不到该进程类型(网络)
- c# - 错误的可空类型推断(可空引用类型)
- sql - 每月租用 postgreSQL
- regex - 如何在 PostgreSQL 中拆分字符串