源码位置:\ext\date\PHP_date.c
timelib_time *t,*now; timelib_tzinfo *tzi;
tzi = get_timezone_info(TSRMLS_C);
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,ZEND_NUM_ARGS() TSRMLS_CC,“sl”,×,&time_len,&preset_ts) != FAILURE) { /* We have an initial timestamp */ now = timelib_time_ctor();
if (!time_len) { timelib_time_dtor(now); RETURN_FALSE; }
t = timelib_strtotime(times,time_len,&error,php_date_parse_tzfile_wrapper); error1 = error->error_count; timelib_error_container_dtor(error); timelib_fill_holes(t,now,TIMELIB_NO_CLONE); timelib_update_ts(t,tzi); ts = timelib_date_to_int(t,&error2);
timelib_time_dtor(now); timelib_time_dtor(t);
if (error1 || error2) { RETURN_FALSE; } else { RETURN_LONG(ts); } } /* }}} */
因此也引出写这篇文章,本文包括如下内容:
1).strtotime函数的一些用法 2).strtotime函数的实现基本原理 3).strtotime(“-1 month”)求值失败的原因
strtotime函数的一些用法
1、 strtotime(“JAN”)和strtotime(“January”)
这两个用法的效果是一样的,都是返回指定月份的今天,如果指定月份没有今天,则顺延到下一个月。 如在2011-03-31计算二月,代码:
2、 first关键字
first是一个辅助型的关键字,它可以与星期,天等可以指定确认值的关键字组合使用,如求2011年的第一个星期天:
与first类似,prevIoUs关键字可以与星期,天组合使用,表示指定时间的前一个星期几或前一天。如下所示代码:
";
next关键字与prevIoUs相反,它表示下一个星期几或后一天。
4、 last关键字
last关键字既可以作为上一个,也可以作为最后一个。如求上一个星期天的日期: