【发布时间】:2011-11-17 20:34:14
【问题描述】:
我在使用 PHP 和使用当前时间的 C 脚本时遇到了一个奇怪的问题。我的程序有点复杂,但问题仅限于此:
我有这个 C 代码,它打印 1 分钟前的日期、当前日期和 1 分钟后的日期:
#include <time.h>
#include <stdio.h>
int main(int argc, char **argv){
char date[9];
time_t rawtime;
struct tm * ptm;
int i;
time(&rawtime);
ptm = gmtime(&rawtime);
ptm->tm_min--;
for(i = 0; i < 3; i++){
rawtime = mktime(ptm);
ptm = gmtime(&rawtime);
snprintf(date, 9, "%d %d %d", ptm->tm_mday, ptm->tm_hour, ptm->tm_min);
printf("%s\n", date);
ptm->tm_min++;
}
return 0;
}
当我在 shell 中运行它时,我得到了正确的结果(打印格式是月份的日期、小时、分钟):
$ ./test
17 20 7
17 20 8
17 20 9
但是,当我通过 PHP 执行它时,我得到了奇怪的结果。这是PHP代码:
<?php
exec("path_to_exec/test", $output);
echo "$output[0]<br/>";
echo "$output[1]<br/>";
echo "$output[2]<br/>";
?>
这是输出:
17 20 7
17 17 8
17 14 9
时间显然是错误的。任何人都知道可能导致这种情况的原因吗?
【问题讨论】:
-
var_dump($output)得到什么? -
@jprofitt
array(3) { [0]=> string(8) "17 17 40" [1]=> string(8) "17 14 41" [2]=> string(8) "17 11 42" } -
您想使用 C 来获取日期信息的任何特殊原因? PHP 的内置日期函数有什么问题?
-
@NullUserExceptionఠ_ఠ 我的 C 程序更大,并使用时间/日期来计算我想要的。我只是想在页面中显示结果,但结果是错误的,因为 C 代码中的时间是错误的(尽管当我使用 shell 时它们似乎是正确的)。