X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fdatetime.php;h=ca6c1b4674802bb5bf64d48de5b3a535f005b174;hb=55351114facbe2a911b75e906c88b1b5ac5765bb;hp=15d688530c0136de198d182ea75fa484c014b429;hpb=35e29e10e69dfb086e990d852aa6b5006ce31d1b;p=friendica.git diff --git a/include/datetime.php b/include/datetime.php index 15d688530c..ca6c1b4674 100644 --- a/include/datetime.php +++ b/include/datetime.php @@ -1,5 +1,7 @@ setTimeZone(new DateTimeZone($to)); - return($d->format($fmt)); + + // Slight hackish adjustment so that 'zero' datetime actually returns what is intended + // otherwise we end up with -0001-11-30 ... + // add 32 days so that we at least get year 00, and then hack around the fact that + // months and days always start with 1. + + if(substr($s,0,10) == '0000-00-00') { + $d = new DateTime($s . ' + 32 days', new DateTimeZone('UTC')); + return str_replace('1','0',$d->format($fmt)); + } + + $d = new DateTime($s, new DateTimeZone($from)); + $d->setTimeZone(new DateTimeZone($to)); + return($d->format($fmt)); }} +// wrapper for date selector, tailored for use in birthday fields + function dob($dob) { list($year,$month,$day) = sscanf($dob,'%4d-%2d-%2d'); $y = datetime_convert('UTC',date_default_timezone_get(),'now','Y'); @@ -67,6 +88,16 @@ function dob($dob) { return $o; } + +// returns a date selector. +// $pre = prefix (if needed) for HTML name and class fields +// $ymin = first year shown in selector dropdown +// $ymax = last year shown in selector dropdown +// $allow_blank = allow an empty response on any field +// $y = already selected year +// $m = already selected month +// $d = already selected day + if(! function_exists('datesel')) { function datesel($pre,$ymin,$ymax,$allow_blank,$y,$m,$d) { @@ -100,6 +131,10 @@ function datesel($pre,$ymin,$ymax,$allow_blank,$y,$m,$d) { return $o; }} +// implements "3 seconds ago" etc. +// based on $posted_date, (UTC). +// Results relative to current timezone +// Limited to range of timestamps if(! function_exists('relative_date')) { function relative_date($posted_date) { @@ -132,6 +167,17 @@ function relative_date($posted_date) { }} + +// Returns age in years, given a date of birth, +// the timezone of the person whose date of birth is provided, +// and the timezone of the person viewing the result. +// Why? Bear with me. Let's say I live in Mittagong, Australia, and my +// birthday is on New Year's. You live in San Bruno, California. +// When exactly are you going to see my age increase? +// A: 5:00 AM Dec 31 San Bruno time. That's precisely when I start +// celebrating and become a year older. If you wish me happy birthday +// on January 1 (San Bruno time), you'll be a day late. + function age($dob,$owner_tz = '',$viewer_tz = '') { if(! intval($dob)) return 0;