PHP中的日期问题
我有一段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点,但由于某种原因,目前它似乎添加了字符串,但并不准确 这是我正在使用的代码: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
$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天))
;-)