我在日期范围选择器中选择了两个日期,并将它们存储在一个数据库列中,但它仅存储一个日期,例如:0000-00-00
。我不能在一列中存储两个日期,所以我想用连字符(-)将该字符串分成两个变量。
这是我的日期范围功能:
<script>
$(function () {
//Initialize Select2 Elements
$('.select2').select2();
//Date range picker
$('#bilty_date_range').daterangepicker();
});
</script>
这是我的日期插入代码:
'bilty_date_range' => date('y-m-d',strtotime($bilty_date_range)),
后端结果如下:11/07/2018 - 12/25/2018
。
答案 0 :(得分:5)
字符串拆分函数在Javascript和PHP中均可用。
在php中,您只能使用
$arr = explode("-", $str);
$date_start = $arr[0];
$date_end = $arr[1];
事实上,将它们放入数组后,甚至不需要将它们都存储到两个单独的变量中。将$arr[0]
和$arr[1]
存储到数据库中时,只需传递它们即可。
即
'date_start' => date('y-m-d',strtotime($arr[0])),
'date_end' => date('y-m-d',strtotime($arr[1])),
答案 1 :(得分:1)
var mystr = '11/07/2018 - 12/25/2018';
//Splitting it with " - " as the separator
var myarr = mystr.split(" - ");
var dateA = myarr[0]; // '11/07/2018'
var dateB = myarr[1]; // '12/25/2018'
答案 2 :(得分:1)
使用PHP函数explode分割字符串,然后使用DateTime interface从字符串中创建有效日期,并将其存储为数据库中的date
类型而不是字符串!
<?php
$dates = '11/07/2018 - 12/25/2018';
$d = explode('-', $dates);
$dt1 = new DateTime($d[0]);
$dt2 = new DateTime($d[1]);
print_r($dt1);
print_r($dt2);
echo $dt1->format('Y-m-d');
echo PHP_EOL;
echo $dt2->format('Y-m-d');
输出:
DateTime Object
(
[date] => 2018-11-07 00:00:00.000000
[timezone_type] => 3
[timezone] => UTC
)
DateTime Object
(
[date] => 2018-12-25 00:00:00.000000
[timezone_type] => 3
[timezone] => UTC
)
2018-11-07
2018-12-25
答案 3 :(得分:1)
如果您想通过MySQL对其进行拆分,则可以使用 SUBSTRING_INDEX ,如下所示:
MariaDB [(none)]> SET @d := '11/07/2018 - 12/25/2018';
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]>
MariaDB [(none)]>
MariaDB [(none)]> SELECT
-> SUBSTRING_INDEX(@d, '-', 1) AS date_from,
-> SUBSTRING_INDEX(@d, '-', -1) AS date_to;
+-------------+-------------+
| date_from | date_to |
+-------------+-------------+
| 11/07/2018 | 12/25/2018 |
+-------------+-------------+
1 row in set (0.000 sec)
MariaDB [(none)]>