time()为两个不同的日期提供相同的值

时间:2017-10-19 03:41:46

标签: php date datetime

我在这里有以下代码:

$start_date = date_parse('10-17-2017');
$end_date = date_parse('10-30-2017');

$start_time = time($start_date);
$now = time();
$end_time = time($end_date);

var_dump($start_time,$end_time, $now);

输出是这样的:

int(1508383949) int(1508383949) int(1508383949)

他们为什么给出相同的价值?

我也尝试过使用strtotime

 $start_time = strtotime($start_date);
 $now = time();
 $end_time = strtotime($end_date);

结果如下:

bool(false) bool(false) int(1508384298)

2 个答案:

答案 0 :(得分:1)

时间函数不带任何参数。所以以下不会奏效。

time($start_date);

使用strtotime,您需要以m/d/yd-m-y格式提供日期。请检查连字符和斜线。

来自strtotime

的官方文件
  

注意:m / d / y或d-m-y格式的日期通过查看来消除歧义   在各个组件之间的分隔符处:如果分隔符是a   斜线(/),然后是美国m / d / y;而如果   separator是短划线( - )或点(。),然后是欧洲d-m-y格式   假设。但是,如果年份是以两位数格式给出的   分隔符是破折号( - ,日期字符串被解析为y-m-d。

答案 1 :(得分:0)

早在你身边,

您获得相同的值,因为

  1. time不接受任何参数
  2. 您正确使用date_parse / strtotime
  3. strtotime允许 - 与许多其他人一样 - 这两种日期格式为m/d/yd-m-y。因此,您需要将值从10-17-2017更改为10/17/2017或更改为2017-10-17

    我的解决方案:

    <?php
    
        $start_time = strtotime('10/17/2017');
        $end_time   = strtotime('10/30/2017');
        $now        = time();
    
        var_dump($start_time, $end_time, $now);
    

    输出:

    int(1508212800) int(1509336000) int(1508385505) 
    

    您可以在PHP.net上找到更多信息,只需查找strtotimetime函数即可。 :3

    此致
    萨姆