我有一块试图这样做的PHP: 1)给出一个像“h m s”这样的字符串(其中h = hr,m = min,s = sec) 2)将时间从1)添加到时间() 3)将结果格式化为“y-mth-d-h-min-s”
所以说时间现在是01-01-2011凌晨1点,我希望它添加“10 0 0”,这应该给我01-01-2011上午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”。
主要问题是时间()如何知道“10 0 0”实际上是10小时0分0分钟,而不是10天0小时0分钟
答案 0 :(得分:1)
没有。
它将cast it to int,将其解释为秒,并将其添加到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);
答案 1 :(得分:0)
我能想到的最简单的方法是从$values_arr['regx_expdate']
中提取每个令牌,加上秒并简单地将其添加到time()
。
例如
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;
}
答案 2 :(得分:0)
将输入字符串解析为Hours Minutes和Seconds后,可能值得将所述值数组重组为PHP strtotime可以处理的字符串。
答案 3 :(得分:0)
这个小功能可能有所帮助,您可以根据自己的目的进行自定义:
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
祝你好运!
答案 4 :(得分:0)
要在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());