Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中的日期问题_Php_Date - Fatal编程技术网

PHP中的日期问题

PHP中的日期问题,php,date,Php,Date,我有一段PHP正在尝试这样做: 1) 给定一个类似“h m s”的字符串(其中h=hr,m=min,s=sec) 2) 将时间从1)添加到时间() 3) 将结果格式化为“y-mth-d-h-min-s” 假设时间现在是2011年1月1日凌晨1点,我希望它加上“10 0 0”,这应该会给我2011年1月1日上午11点,但由于某种原因,目前它似乎添加了字符串,但并不准确 这是我正在使用的代码: $values_arr['regx_expdate'] = date("Y-m-d H:i:s", tim

我有一段PHP正在尝试这样做: 1) 给定一个类似“h m s”的字符串(其中h=hr,m=min,s=sec) 2) 将时间从1)添加到时间() 3) 将结果格式化为“y-mth-d-h-min-s”

假设时间现在是2011年1月1日凌晨1点,我希望它加上“10 0 0”,这应该会给我2011年1月1日上午11点,但由于某种原因,目前它似乎添加了字符串,但并不准确

这是我正在使用的代码:

$values_arr['regx_expdate'] = date("Y-m-d H:i:s", time()+$values_arr['regx_expdate']);
其中,$values_arr['regx_expdate']是格式为“h m s”的字符串,例如“10 0 0”

主要的问题是,time()如何知道“10 0 0 0”实际上是10小时0分钟,而不是10天0小时0分钟???

它不知道

它会将其解释为秒,并将其添加到
time()
的结果中

可以按照您的描述执行的一些代码是:

list ($h,$m,$s) = explode(' ', $values_arr['regx_expdate'], 3);
$difference = 60*60*$h + 60*$m + $s;
$values_arr['regx_expdate'] = date("Y-m-d H:i:s", time()+$difference);
事实并非如此

它会将其解释为秒,并将其添加到
time()
的结果中

可以按照您的描述执行的一些代码是:

list ($h,$m,$s) = explode(' ', $values_arr['regx_expdate'], 3);
$difference = 60*60*$h + 60*$m + $s;
$values_arr['regx_expdate'] = date("Y-m-d H:i:s", time()+$difference);

我能想到的最简单的方法是从
$values\u arr['regx\u expdate']
提取每个令牌,将秒数相加,然后简单地将其添加到
时间()

比如说

if (preg_match('/^(\d{1,2}) (\d{1,2}) (\d{1,2})$/', $values_arr['regx_expdate'], $units)) {
    $seconds = $units[3] + ($units[2] * 60) + ($units[1] * 3600);

    $newTimestamp = time() + $seconds;
}

我能想到的最简单的方法是从
$values\u arr['regx\u expdate']
提取每个令牌,将秒数相加,然后简单地将其添加到
时间()

比如说

if (preg_match('/^(\d{1,2}) (\d{1,2}) (\d{1,2})$/', $values_arr['regx_expdate'], $units)) {
    $seconds = $units[3] + ($units[2] * 60) + ($units[1] * 3600);

    $newTimestamp = time() + $seconds;
}

在将输入字符串解析为小时分和秒之后,可能需要将所述值数组重新组织为PHP可以处理的字符串。

将输入字符串解析为小时分和秒之后,将所述值数组重新组织为PHP可以处理的字符串可能是值得的。

这个小函数可能会有所帮助,您可以自定义它以满足您的目的:

function AddingDaysFromNow($number_of_days)
    {
        $today = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
         // today is now time return in seconds

        $addingTime = $today + (86400 * $number_of_days);
         // adding to advance it

        //choice a date form at here
        return date("Y-m-d", $addingTime);
    }

    //use it as 
      $expireDate = AddingDaysFromNow(2);  // assume the 2 is advance to 2 days ahead
                                           // return the day in future

祝你好运

此小功能可能会有所帮助,您可以根据自己的目的对其进行自定义:

function AddingDaysFromNow($number_of_days)
    {
        $today = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
         // today is now time return in seconds

        $addingTime = $today + (86400 * $number_of_days);
         // adding to advance it

        //choice a date form at here
        return date("Y-m-d", $addingTime);
    }

    //use it as 
      $expireDate = AddingDaysFromNow(2);  // assume the 2 is advance to 2 days ahead
                                           // return the day in future

祝你好运

要在php中处理和转换日期,您应该首先将所有内容强制转换为unixtimestamp,然后为其提供所需的结构

$date = date("THE-DATE-FORMAT-YOU-WANT", "THE-DATE-YOU-WOULD-LIKE-TO-CONVERT-IN-SECONDS");

//For example.

$new_date = date("Y-m-d H:i:s", strtotime($old_date));

$now = date("Y-m-d H:i:s", time());

要在php中处理和转换日期,首先应将所有内容强制转换为unixtimestamp,然后为其提供所需的结构

$date = date("THE-DATE-FORMAT-YOU-WANT", "THE-DATE-YOU-WOULD-LIKE-TO-CONVERT-IN-SECONDS");

//For example.

$new_date = date("Y-m-d H:i:s", strtotime($old_date));

$now = date("Y-m-d H:i:s", time());

如果用冒号替换空格,结果会有什么不同吗
str_replace(“”,:“,$values_arr['regx_expdate'])
如果用冒号替换空格,结果会有什么不同吗
str_replace(“”,:“,$values_arr['regx_expdate'])
您知道您可以使用
strotime(sprintf('+%d天',$number_天))
;-)您知道您可以只使用
strotime(sprintf('+%d天',$number/u天))
;-)