Re: [PHP] Re: strtotime
On Oct 17, 2010, at 9:57 PM, Tommy Pham wrote: -Original Message- From: Tamara Temple [mailto:tamouse.li...@gmail.com] On Oct 17, 2010, at 2:34 PM, John Taylor-Johnston wrote: Here is another nifty piece of code I found. How does this work? What is 31556926? Number of second in a year? (31556926 / (24 * 60 * 60) yields 365.2421...) Your forgot to divide 365.25 days per year ;) well, no i didn't forget, merely pointing out that it equals days in a year. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: strtotime
On 17 October 2010 20:34, John Taylor-Johnston john.taylor-johns...@cegepsherbrooke.qc.ca wrote: Yaay, I'm 45 now :). Happy Birthday. ;-) -- Richard Quadling Twitter : EE : Zend @RQuadling : e-e.com/M_248814.html : bit.ly/9O8vFY -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: strtotime
On Oct 17, 2010, at 12:58 AM, John Taylor-Johnston wrote: According to this, I'm 44 not 45 :)p $birthday = '1965-08-30'; //calculate years of age (input string: -MM-DD) function birthday ($birthday){ list($year,$month,$day) = explode(-,$birthday); $year_diff = date(Y) - $year; $month_diff = date(m) - $month; $day_diff = date(d) - $day; if ($day_diff 0 || $month_diff 0) This will trigger anytime the current day of the month is less than 30. $year_diff--; return $year_diff; } echo birthday ($birthday); -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
RE: [PHP] Re: strtotime
-Original Message- From: John Taylor-Johnston [mailto:John.Taylor- johns...@cegepsherbrooke.qc.ca] Sent: Saturday, October 16, 2010 10:58 PM To: PHP-General Subject: [PHP] Re: strtotime According to this, I'm 44 not 45 :)p $birthday = '1965-08-30'; //calculate years of age (input string: -MM-DD) function birthday ($birthday){ list($year,$month,$day) = explode(-,$birthday); $year_diff = date(Y) - $year; $month_diff = date(m) - $month; $day_diff = date(d) - $day; if ($day_diff 0 || $month_diff 0) I think the problem is with the logic above. $year_diff = 44 $month_diff = 2 $day_diff = -13 Since the $month_diff is positive meaning you're already passed your birthdate. If the $month_diff is 0 - your birth month, then you need to check if the if it's past your birth day yet (negative $day_diff). That logic should be changed to if if (($month_diff == 0 $day_diff 0) || $month_diff 0) Then you're 45 ;) Regards, Tommy $year_diff--; return $year_diff; } echo birthday ($birthday); John Taylor-Johnston wrote: I'm working my way right now through the manual: http://ca.php.net/manual/en/function.strtotime.php. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: strtotime
Yaay, I'm 45 now :). Here is another nifty piece of code I found. How does this work? What is 31556926? function calculateAge($birthday){ return floor((time() - strtotime($birthday))/31556926); } echo calculateAge('1965-10-17'); http://ca.php.net/manual/en/function.floor.php -- $birthday = '1965-08-30'; //calculate years of age (input string: -MM-DD) function birthday ($birthday){ list($year,$month,$day) = explode(-,$birthday); $year_diff = date(Y) - $year; $month_diff = date(m) - $month; $day_diff = date(d) - $day; # if ($day_diff 0 || $month_diff 0) if (($month_diff == 0 $day_diff 0) || $month_diff 0) $year_diff--; return $year_diff; } echo birthday ($birthday); -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: strtotime
On 17/10/2010 21:34, John Taylor-Johnston wrote: Yaay, I'm 45 now :). Here is another nifty piece of code I found. How does this work? What is 31556926? number of seconds in a year...? Rich -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: strtotime
On Oct 17, 2010, at 2:34 PM, John Taylor-Johnston wrote: Here is another nifty piece of code I found. How does this work? What is 31556926? Number of second in a year? (31556926 / (24 * 60 * 60) yields 365.2421...) -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
RE: [PHP] Re: strtotime
-Original Message- From: Tamara Temple [mailto:tamouse.li...@gmail.com] Sent: Sunday, October 17, 2010 2:33 PM To: PHP General Subject: Re: [PHP] Re: strtotime On Oct 17, 2010, at 2:34 PM, John Taylor-Johnston wrote: Here is another nifty piece of code I found. How does this work? What is 31556926? Number of second in a year? (31556926 / (24 * 60 * 60) yields 365.2421...) Your forgot to divide 365.25 days per year ;) -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: strtotime - assumptions about default formatting of dates
I wrote a little AJAX gadget which sent the string typed to a PHP backend which parsed it using strtotime and then formatting it out again as something unamiguous (like 2 January 2009). Then every time the date entry field is changed by the user (with an onKeyUp event), this AJAX call is triggered and displays the unambiguous form next to the input box, so users can see how their entry is being interpreted. Of course, there's some overhead in the AJAX calls, and it requires JavaScript. If you wanted to do without JavaScript you could do a similar parse-format sequence when the form is submitted and show a confirmation page with your server's interpretation of the date. Cheers Pete I took this idea and wrote an ajax so that on keyup or blur, the entry is sent to PHP which puts it into strtotime() and if a valid result comes out, formats it something like Wed January 23, 2008 6:23pm. If the result is invalid, it outputs an Invalid message. This is then displayed in a span next to the textbox. So as the user types they can see if what they entered is valid, and also see how the date/time will be interpreted. Works beautifully, and makes the form very usable. For what it's worth, here is the code: The PHP ajax (called judgedatetime.php: --- $inp=$_REQUEST['a']; $a=strtotime($inp); if ($a 1200103200){ $b=Invalid; } else { $b=date(D M j, Y g:ia,$a); } echo $b; ? The Javascript --- function assessdtime(dTime,putHere){ AjaxRequest.get({'url':'ajax/judgedatetime.php', 'parameters':{'a':dTime}, 'onSuccess':function(req){ document.getElementById(putHere).innerHTML=req.responseText; } })} And HTML embedded in the page.. --- input type=text size=14 id=start name=start onkeyup=assessdtime(this.value,'startreport'); onblur=assessdtime(this.value,'startreport'); / span id=startreportEnter a date and time/span -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: strtotime
Lester Caine [EMAIL PROTECTED] a écrit dans le message de news: [EMAIL PROTECTED] Ashley Sheridan wrote: I'll translate In PHP4, strtotime works fine in PHP5 strtotime gives a result of 19700101 when the data entered was strtotime(20080950) What does work fine mean? 20080950 isn't normal, so what is the expected result? Well, for starts Micah is right, your date string will be interpreted as the 50th of September, 2008, which isn't valid and defaults to the time represented by the timestamp 0. If you want to turn 8-digit number strings into timestamps, make sure of two things: 1.It's actually a string and not a number 2.The string is in the format mmdd The strings can be a variety of formats, all found at http://www.gnu.org/software/shishi/manual/html_node/Date-input-formats.html which is a link available on the strtotime manual page. I seem to remember a previous discussion about this 'bug' but I can't track the notes. Is it not the case that you can simply add days or months to the 'number' and then use strtotime to output the 'normalised' date. So adding 30 to 20th Sept would return 20th October. This very useful feature was corrected as a bug in the rewrite of Date in PHP5.1? Reason for looking for the notes was to remember how one has to do it now -- Lester Caine - G8HFL Thanks everybody for your answer. Yes, this is a very useful feature to add days in a date. My version of PHP is 5.2.0 Fx GILLES -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: strtotime
O/H Bastien Koert ??: 2008/11/8 Maciek Sokolewicz [EMAIL PROTECTED] gilles wrote: Avec la version 4 de php, strtotime(20080950) fonctionne correctement en allant sur le mois d'octobre, alors qu'en version 5: 19700101. Merci de votre aide This is an ENGLISH list, please rephrase your question in english and people might understand. Cette liste est une liste anglaise, reformulent svp votre question en anglais svp. merci, - Tul -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php I'll translate In PHP4, strtotime works fine Define works fine. in PHP5 strtotime gives a result of 19700101 when the data entered was strtotime(20080950) Linux PHP version 5.1.6 Apache 2 This strtotime(20080950) returns nothing. --- Thodoris
Re: [PHP] Re: strtotime
O/H gilles έγραψε: Thodoris [EMAIL PROTECTED] a ιcrit dans le message de news: [EMAIL PROTECTED] O/H Bastien Koert ??: 2008/11/8 Maciek Sokolewicz [EMAIL PROTECTED] gilles wrote: Avec la version 4 de php, strtotime(20080950) fonctionne correctement en allant sur le mois d'octobre, alors qu'en version 5: 19700101. Merci de votre aide This is an ENGLISH list, please rephrase your question in english and people might understand. Cette liste est une liste anglaise, reformulent svp votre question en anglais svp. merci, - Tul -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php I'll translate In PHP4, strtotime works fine Define works fine. in PHP5 strtotime gives a result of 19700101 when the data entered was strtotime(20080950) Linux PHP version 5.1.6 Apache 2 This strtotime(20080950) returns nothing. --- Thodoris Works fine in php4 means date(d/m/Y,strtotime(20080950)) returns 20/10/2008, which is correct. Thanks In another server this: ?php $tstamp = date(d/m/Y,strtotime(20080950)); print pre; print $tstamp; ? gives me: 01/01/1970 Funny isn't it? I gives me the epoch start date. Probably because strtotime returns null so date thinks that null is equivalent to 0 or something like that AFAIK. Nevertheless this 20080950 is not a valid date so this behavior makes more sense to me than getting 20/10/2008 as a result. So any invalid date will probably give you 01/01/1970.
Re: [PHP] Re: strtotime
On Sun, 2008-11-09 at 19:46 +0100, gilles wrote: Thodoris [EMAIL PROTECTED] a crit dans le message de news: [EMAIL PROTECTED] O/H Bastien Koert ??: 2008/11/8 Maciek Sokolewicz [EMAIL PROTECTED] gilles wrote: Avec la version 4 de php, strtotime(20080950) fonctionne correctement en allant sur le mois d'octobre, alors qu'en version 5: 19700101. Merci de votre aide This is an ENGLISH list, please rephrase your question in english and people might understand. Cette liste est une liste anglaise, reformulent svp votre question en anglais svp. merci, - Tul -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php I'll translate In PHP4, strtotime works fine Define works fine. in PHP5 strtotime gives a result of 19700101 when the data entered was strtotime(20080950) Linux PHP version 5.1.6 Apache 2 This strtotime(20080950) returns nothing. --- Thodoris Works fine in php4 means date(d/m/Y,strtotime(20080950)) returns 20/10/2008, which is correct. Thanks Which is actually incorrect (I've never seen the 50th of September) and it was fixed in PHP 5. What you are assuming is correct behaviour is actually a bug. Ash www.ashleysheridan.co.uk -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: strtotime
On Sun, Nov 9, 2008 at 3:50 PM, Ashley Sheridan [EMAIL PROTECTED] wrote: On Sun, 2008-11-09 at 19:46 +0100, gilles wrote: Thodoris [EMAIL PROTECTED] a crit dans le message de news: [EMAIL PROTECTED] O/H Bastien Koert ??: 2008/11/8 Maciek Sokolewicz [EMAIL PROTECTED] gilles wrote: Avec la version 4 de php, strtotime(20080950) fonctionne correctement en allant sur le mois d'octobre, alors qu'en version 5: 19700101. Merci de votre aide This is an ENGLISH list, please rephrase your question in english and people might understand. Cette liste est une liste anglaise, reformulent svp votre question en anglais svp. merci, - Tul -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php I'll translate In PHP4, strtotime works fine Define works fine. in PHP5 strtotime gives a result of 19700101 when the data entered was strtotime(20080950) Linux PHP version 5.1.6 Apache 2 This strtotime(20080950) returns nothing. --- Thodoris Works fine in php4 means date(d/m/Y,strtotime(20080950)) returns 20/10/2008, which is correct. Thanks Which is actually incorrect (I've never seen the 50th of September) and it was fixed in PHP 5. What you are assuming is correct behaviour is actually a bug. Ash www.ashleysheridan.co.uk -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php I didn't read this thread (sorry) but I wonder if timezone/locale might be the culprit. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: strtotime
Thodoris [EMAIL PROTECTED] a écrit dans le message de news: [EMAIL PROTECTED] O/H Bastien Koert ??: 2008/11/8 Maciek Sokolewicz [EMAIL PROTECTED] gilles wrote: Avec la version 4 de php, strtotime(20080950) fonctionne correctement en allant sur le mois d'octobre, alors qu'en version 5: 19700101. Merci de votre aide This is an ENGLISH list, please rephrase your question in english and people might understand. Cette liste est une liste anglaise, reformulent svp votre question en anglais svp. merci, - Tul -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php I'll translate In PHP4, strtotime works fine Define works fine. in PHP5 strtotime gives a result of 19700101 when the data entered was strtotime(20080950) Linux PHP version 5.1.6 Apache 2 This strtotime(20080950) returns nothing. --- Thodoris Works fine in php4 means date(d/m/Y,strtotime(20080950)) returns 20/10/2008, which is correct. Thanks -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: strtotime
2008/11/8 Maciek Sokolewicz [EMAIL PROTECTED] gilles wrote: Avec la version 4 de php, strtotime(20080950) fonctionne correctement en allant sur le mois d'octobre, alors qu'en version 5: 19700101. Merci de votre aide This is an ENGLISH list, please rephrase your question in english and people might understand. Cette liste est une liste anglaise, reformulent svp votre question en anglais svp. merci, - Tul -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php I'll translate In PHP4, strtotime works fine in PHP5 strtotime gives a result of 19700101 when the data entered was strtotime(20080950) -- Bastien Cat, the other other white meat
Re: [PHP] Re: strtotime
Bastien Koert wrote: 2008/11/8 Maciek Sokolewicz [EMAIL PROTECTED] gilles wrote: Avec la version 4 de php, strtotime(20080950) fonctionne correctement en allant sur le mois d'octobre, alors qu'en version 5: 19700101. Merci de votre aide This is an ENGLISH list, please rephrase your question in english and people might understand. Cette liste est une liste anglaise, reformulent svp votre question en anglais svp. merci, - Tul -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php I'll translate In PHP4, strtotime works fine in PHP5 strtotime gives a result of 19700101 when the data entered was strtotime(20080950) What does work fine mean? 20080950 isn't normal, so what is the expected result? Thank you, Micah Gersten onShore Networks Internal Developer http://www.onshore.com -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: strtotime
On Sat, 2008-11-08 at 18:57 -0600, Micah Gersten wrote: Bastien Koert wrote: 2008/11/8 Maciek Sokolewicz [EMAIL PROTECTED] gilles wrote: Avec la version 4 de php, strtotime(20080950) fonctionne correctement en allant sur le mois d'octobre, alors qu'en version 5: 19700101. Merci de votre aide This is an ENGLISH list, please rephrase your question in english and people might understand. Cette liste est une liste anglaise, reformulent svp votre question en anglais svp. merci, - Tul -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php I'll translate In PHP4, strtotime works fine in PHP5 strtotime gives a result of 19700101 when the data entered was strtotime(20080950) What does work fine mean? 20080950 isn't normal, so what is the expected result? Thank you, Micah Gersten onShore Networks Internal Developer http://www.onshore.com Well, for starts Micah is right, your date string will be interpreted as the 50th of September, 2008, which isn't valid and defaults to the time represented by the timestamp 0. If you want to turn 8-digit number strings into timestamps, make sure of two things: 1.It's actually a string and not a number 2.The string is in the format mmdd The strings can be a variety of formats, all found at http://www.gnu.org/software/shishi/manual/html_node/Date-input-formats.html which is a link available on the strtotime manual page. Ash www.ashleysheridan.co.uk -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: strtotime
Ashley Sheridan wrote: I'll translate In PHP4, strtotime works fine in PHP5 strtotime gives a result of 19700101 when the data entered was strtotime(20080950) What does work fine mean? 20080950 isn't normal, so what is the expected result? Well, for starts Micah is right, your date string will be interpreted as the 50th of September, 2008, which isn't valid and defaults to the time represented by the timestamp 0. If you want to turn 8-digit number strings into timestamps, make sure of two things: 1.It's actually a string and not a number 2.The string is in the format mmdd The strings can be a variety of formats, all found at http://www.gnu.org/software/shishi/manual/html_node/Date-input-formats.html which is a link available on the strtotime manual page. I seem to remember a previous discussion about this 'bug' but I can't track the notes. Is it not the case that you can simply add days or months to the 'number' and then use strtotime to output the 'normalised' date. So adding 30 to 20th Sept would return 20th October. This very useful feature was corrected as a bug in the rewrite of Date in PHP5.1? Reason for looking for the notes was to remember how one has to do it now -- Lester Caine - G8HFL - Contact - http://lsces.co.uk/lsces/wiki/?page=contact L.S.Caine Electronic Services - http://lsces.co.uk EnquirySolve - http://enquirysolve.com/ Model Engineers Digital Workshop - http://medw.co.uk// Firebird - http://www.firebirdsql.org/index.php -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: strtotime problem
On 8 Oct 2008, at 12:42, Nathan Rixham wrote: Thodoris wrote: I know that *strtotime*() only recognises the formats mm/dd/, -mm-dd and mmdd for numeric months but I need do something like that: function dateWebToMysql($webdate){ $format = 'Y-m-d'; $timestamp = strtotime($webdate); return date($format,$timestamp); } print dateWebToMysql('01/03/2008'); Where 01/03/2008 is in dd/mm/ format (not the American format). What is the best way of doing this? Any ideas? completely random and never used myself [ie just made it up] function dateWebToMysql( $webdate ){ return strtotime(strrev( str_replace('/','', $webdate) )); } What exactly do you expect strtotime('80023010') to return? I tend to always normalise dates to Y-m-d before pushing them into strtotime, but in your case you don't need to do that. If you *know* the date always comes in as that format you can simply do this... function dateWebToMysql($webdate) { list($day, $month, $year) = explode('/', $webdate); return $year.'-'.$month.'-'.$day; } -Stut -- http://stut.net/ -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: strtotime
Ron Piggott wrote: I see I broke a rule. The variable can't start with a number. Still strtotime doesn't work with -18 months How would you handle this? Ron Uh, it works fine here: php5 -r '$a=strtotime(-18 months); print strftime(%Y%m%d,$a); ': 20060810 /Per Jessen, Zürich -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php