diff options
author | Hartmut Holzgraefe <hholzgra@php.net> | 2000-04-17 09:44:49 +0000 |
---|---|---|
committer | Hartmut Holzgraefe <hholzgra@php.net> | 2000-04-17 09:44:49 +0000 |
commit | 0b91e2fcd34ed6f5538b2ff9a4b0e90313d406c0 (patch) | |
tree | 336e75ee00cc53e3622539d9d674d8037eac509d /ext | |
parent | 2b36f579f171cd6de7dc96886674889e90a77625 (diff) | |
download | php-git-0b91e2fcd34ed6f5538b2ff9a4b0e90313d406c0.tar.gz |
initial checkin
Diffstat (limited to 'ext')
-rw-r--r-- | ext/calendar/cal_unix.c | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/ext/calendar/cal_unix.c b/ext/calendar/cal_unix.c new file mode 100644 index 0000000000..f48243669c --- /dev/null +++ b/ext/calendar/cal_unix.c @@ -0,0 +1,76 @@ +/* + +----------------------------------------------------------------------+ + | PHP version 4.0 | + +----------------------------------------------------------------------+ + | Copyright (c) 1997, 1998, 1999, 2000 The PHP Group | + +----------------------------------------------------------------------+ + | This source file is subject to version 2.01 of the PHP license, | + | that is bundled with this package in the file LICENSE, and is | + | available at through the world-wide-web at | + | http://www.php.net/license/2_01.txt. | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | license@php.net so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Authors: Shane Caraveo <shane@caraveo.com> | + | Colin Viebrock <cmv@easydns.com> | + | Hartmut Holzgraefe <hartmut@six.de> | + +----------------------------------------------------------------------+ + */ +/* $Id: */ + +#include "php.h" +#include "php_calendar.h" +#include "sdncal.h" +#include <time.h> + +/* {{{ proto int unixtojd([int timestamp]) + Convert UNIX timestamp to Julian Day */ +PHP_FUNCTION(unixtojd) +{ + pval *timestamp; + long jdate; + time_t t; + struct tm *ta, tmbuf; + int myargc=ARG_COUNT(ht); + + if ((myargc > 1) || (zend_get_parameters(ht,myargc, ×tamp) != SUCCESS)) { + WRONG_PARAM_COUNT; + } + + if(myargc==1) { + convert_to_long(timestamp); + t = timestamp->value.lval; + } else { + t = time(NULL); + } + + ta = localtime_r(&t, &tmbuf); + jdate = GregorianToSdn(ta->tm_year+1900, ta->tm_mon+1,ta->tm_mday); + + RETURN_LONG(jdate); +} +/* }}} */ + +/* {{{ proto int jdtounix(int jday) + Convert Julian Day to UNIX timestamp */ +PHP_FUNCTION(jdtounix) +{ + pval *jday; + long uday; + + if ((ARG_COUNT(ht)!= 1) || (zend_get_parameters(ht,1, &jday) != SUCCESS)) { + WRONG_PARAM_COUNT; + } + + convert_to_long(jday); + + uday = jday->value.lval - 2440588 /* J.D. of 1.1.1970 */; + + if(uday<0) RETURN_FALSE; /* before beginning of unix epoch */ + if(uday>24755) RETURN_FALSE; /* behind end of unix epoch */ + + RETURN_LONG(uday*24*3600); +} +/* }}} */ + |