【问题标题】:I want to split a string into two variables我想将一个字符串分成两个变量
【发布时间】:2019-05-01 04:56:34
【问题描述】:

我在日期范围选择器中选择了两个日期并将它们存储在一个数据库列中,但它只存储一个日期,例如: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.

【问题讨论】:

    标签: javascript php jquery mysql codeigniter


    【解决方案1】:

    字符串拆分函数在 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])),
    

    【讨论】:

      【解决方案2】:
      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'
      

      【讨论】:

        【解决方案3】:

        如果你想通过 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)]>
        

        【讨论】:

          【解决方案4】:

          使用 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');
          

          演示:https://eval.in/1063328

          输出:

          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
          

          【讨论】:

            猜你喜欢
            • 2020-08-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-03-03
            • 2019-11-07
            • 1970-01-01
            相关资源
            最近更新 更多