summaryrefslogtreecommitdiff
path: root/ext/calendar
diff options
context:
space:
mode:
authorHartmut Holzgraefe <hholzgra@php.net>2000-04-17 09:44:49 +0000
committerHartmut Holzgraefe <hholzgra@php.net>2000-04-17 09:44:49 +0000
commit0b91e2fcd34ed6f5538b2ff9a4b0e90313d406c0 (patch)
tree336e75ee00cc53e3622539d9d674d8037eac509d /ext/calendar
parent2b36f579f171cd6de7dc96886674889e90a77625 (diff)
downloadphp-git-0b91e2fcd34ed6f5538b2ff9a4b0e90313d406c0.tar.gz
initial checkin
Diffstat (limited to 'ext/calendar')
-rw-r--r--ext/calendar/cal_unix.c76
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, &timestamp) != 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);
+}
+/* }}} */
+