Search Results

Search found 136 results on 6 pages for 'strtotime'.

Page 1/6 | 1 2 3 4 5 6  | Next Page >

  • PHP strtotime() looks like it is expecting a Euro format

    - by Jason Rhodes
    I've been using PHP's strtotime() method to accept a date field on a form. I love how powerful it is, in how it will accept "Tomorrow", "Next Thursday", or (supposedly) any date representation and convert it to the Unix timestamp. It's been working great -- until yesterday. Someone entered "2-4-10" and instead of logging Feb 4th, 2010, it logged April 10, 2002! So it expected Y-M-D instead of M-D-Y. I thought maybe the problem was just using a 2-digit year, so we tried again with "2-4-2010". That logged April 2nd, 2010! At that point I just don't understand what strtotime() is doing. PHP.net says it expects a US English date format. Why then would it assume D-M-Y? Is there a way around this? Or do I have to stop using strtotime()? Note: I just now did a test. When you use slashes instead of hyphen/dashes, it works fine, even with 2/4/10. Why on earth does that matter? And if that's all it is, should I just run str_replace("-", "/", $input) on the form input before passing it to strtotime()?

    Read the article

  • PHP: Strange Date Problem

    - by Me-and-Coding
    Hi, I have two users in my database whose birth date is set to: 1985-01-26 And then i have function which when provided the users' date, tells how many days are left in the birthday. Here is the function: function retage($iy,$im,$id) { if(!empty($iy)>0 && intval($im)>0 && intval($id)>0) { $tdo=$iy.'-'.$im.'-'.$id; $tdc=date('Y').'-'.$im.'-'.$id; /*echo "<br/>";*/ $cd=date('Y-n-j'); /*echo "<br/>";*/ if(strtotime($tdc)>strtotime($cd))//coming { $ty=floor((strtotime($tdc)-strtotime($tdo))/(3600*24*365)); $td=floor((strtotime($tdc)-strtotime($cd))/(24*3600)); if($td==1) { $td=round((strtotime($tdc)-strtotime($cd))/(24*3600)).' day to go'; } else { $td=round((strtotime($tdc)-strtotime($cd))/(24*3600)).' days to go'; } $ty='<font color="#C7C5C5">is turning '.$ty.' on <br>'.date('M jS Y',strtotime($tdc)).'</font>'; //return 'is turning '.$ty.' on '.$tdc; } elseif(strtotime($tdc)<strtotime($cd))//past { $ty=floor((strtotime($tdc)-strtotime($tdo))/(3600*24*365)); if($ty>0) { //$td='gone '.floor((strtotime($cd)-strtotime($tdc))/(24*3600)).' days ago'; $ndays=floor((strtotime($cd)-strtotime($tdc))/(24*3600)); if($ndays==1) $td=' gone '.round((strtotime($cd)-strtotime($tdc))/(24*3600)).' day ago'; else $td=' gone '.round((strtotime($cd)-strtotime($tdc))/(24*3600)).' days ago'; $ty='<font color="#C7C5C5">had turned '.$ty.' on <br>'.date('M jS Y',strtotime($tdc)).'</font>'; //return 'had turned '.$ty.' on '.$tdc; } else { $tdc=(date('Y')+1).'-'.$im.'-'.$id; $ty=floor((strtotime($tdc)-strtotime($tdo))/(3600*24*365)); //$td=floor((strtotime($tdc)-strtotime($cd))/(24*3600)).' days to go'; $td=floor((strtotime($tdc)-strtotime($cd))/(24*3600)); if($td==1) { $td=round((strtotime($tdc)-strtotime($cd))/(24*3600)).' day to go'; } else { $td=round((strtotime($tdc)-strtotime($cd))/(24*3600)).' days to go'; } $ty='<font color="#C7C5C5">is turning '.$ty.' on <br>'.date('M jS Y',strtotime($tdc)).'</font>'; //return 'is turning '.$ty.' on '.$tdc; } } else//today { $ty=floor((strtotime($tdc)-strtotime($tdo))/(3600*24*365)); if($ty>0) { $td='today'; $ty='<font color="#C7C5C5">has turned <br>'.$ty.' on today </font>'; //return 'has turned '.$ty.' on today'; } else { $ty='<font color="#C7C5C5">today</font>';$td=''; //return ''; } } } else { $ty='';$td=''; //return ''; } $ta[0]=$ty; $ta[1]=$td ; return $ta; } I use below code to show the days remaining: while($rs=mysql_fetch_array($result)) { if (isset($rs['byear'],$rs['bmonth'],$rs['bdate'])) { $tmptxt = retage($rs['byear'],$rs['bmonth'],$rs['bdate']); echo $tmptxt[1]; } } The strange thing is that for one user, the days remaining is shown correctly eg: gone 120 days ago And for other user having same birth date, this is shown: Jan 1st 1970 -14755 days to go Strange: When I use the same function outside of the loop and test with date 1985-01-26, the correct result is shown. Note: You can check out the function for yourself. Could you please tell what could be wrong there, your help will be highly appreciated. Thanks.

    Read the article

  • PHP strtotime( YYYY-mm last day) a month off error

    - by Kami
    I'm trying the following command in PHP 5.2.12 : print (date('Y-m-d', strtotime('2009-12 last day'))); Regarding to the php.net manual : date('m/d/y', strtotime('2009-03 last day')); # 03/31/09 it should display the last day of march 2009 (2009-03-31) ! Mine returns the last day of the previous month ? why ? : 2009-11-30

    Read the article

  • php strtotime() some help

    - by sea_1987
    Hi there, I am taking credit card details and I am taking the expiration date in two form field, one for the expiration month and one for the expiration year, I am wanting to store the expiration date as timestamp. Will strtotime("05/2010") create a time stamp or do I need to pass a day as well or is there an alternative? Thanks

    Read the article

  • PHP strtotime() setting date to default

    - by Paddyd
    I have a script which is reading values from an excel sheet and inserting them into an sql table. My problem is when the script reads in some of the date fields it is setting them to a default value : 1970-01-01 01:00:00 I have noticed that this is happening when it comes across a date where the 'day' is greater than 12 : 13/05/2012 18:52:33 (dd-mm-yyyy hh-mm-ss) I thought this may be due to the script thinking that this is the month field (i.e american format) and it sees it as an invalid value, so I set the default timezone to my own hoping it may resolve the problem but it made no difference. date_default_timezone_set('Europe/Dublin'); Here is an example of what my code is doing: Excel field value : 01/05/2012 18:32:45 Script: $start_time = $data->val($x,5); echo $start_time = date("Y-m-d H:i:s", strtotime($start_time)); Output: 2012-01-05 18:32:45 This is the exact format I am looking for (except for the fact that the day and month fields are switched around i.e american date format) but it doesnt work for the type of dates I mentioned above.

    Read the article

  • PHP strtotime without leap-years

    - by Christian Sciberras
    With regards to this thread, I've developed a partial solution: function strtosecs($time,$now=null){ static $LEAPDIFF=86400; $time=strtotime($time,$now); return $time-((date('Y',$time)-1968)/4*$LEAPDIFF); } The function is supposed to get the number of seconds given a string without checking leap-years. It does this calculating the number of leap-years 1970 [(year-1986)/4], multiplying it by the difference in seconds between a leap-year and a normal year (which in the end, it's just the number of seconds in a day). Finally, I simply remove all those excess leap-year seconds from the calculated time. Here's some examples of the inputs/outputs: // test code echo strtosecs('+20 years',0).'=>'.(strtosecs('+20 years',0)/31536000); echo strtosecs('+1 years',0).'=>'.(strtosecs('+1 years',0)/31536000); // test output 630676800 => 19.998630136986 31471200 => 0.99794520547945 You will probably ask why am I doing a division on the output? It's to test it out; 31536000 is the number of seconds in a year, so that 19.99... should be 20 and 0.99... should be a 1. Sure, I could round it all and get "correct" answer, but I'm worried about the inaccuracies.

    Read the article

  • How to make strtotime parse dates in Australian (i.e. UK) format: dd/mm/yyyy?

    - by Iain Fraser
    I can't beleive I've never come across this one before. Basically, I'm parsing the text in human-created text documents and one of the fields I need to parse is a date and time. Because I'm in Australia, dates are formatted like dd/mm/yyyy but strtotime only wants to parse it as a US formatted date. Also, exploding by / isn't going to work because, as I mentioned, these documents are hand-typed and some of them take the form of d M yy. I've tried multiple combinations of setlocale but no matter what I try, the language is always set to US English. I'm fairly sure setlocale is the key here, but I don't seem to be able to strike upon the right code. Tried these: au au-en en_AU australia aus Anything else I can try? Thanks so much :) Iain Example: $mydatetime = strtotime("9/02/10 2.00PM"); echo date('j F Y H:i', $mydatetime); Produces 2 September 2010 14:00 I want it to produce: 9 February 2010 14:00

    Read the article

  • Reliable strtotime() result for different languages

    - by Maksee
    There was always a strange bug in Joomla when adding new article with back-end displayed with a language other than English (for me it's Russian). The field "Finish Publishing" started to be current date instead of "Never" equivalent in Russian. For a site in php4 finally found that strtotime function returns different results for arbitrary words. For "Never" it always -1 and joomla relies on this result in the JDate implementation. But in other case it sometimes returns a valid date. For russian translation of Never (???????) it is the case, but also for single "N" it is the case, so if one decided to change the string to some other he or she would face the same issue. So the code below <?php echo "Res:".strtotime("N")."<br>"; echo "Res:".strtotime("Nev")."<br>"; echo "Res:".strtotime("Neve")."<br>"; echo "Res:".strtotime("Never")."<br>"; ?> Outputs: Res:1271120400 Res:-1 Res:-1 Res:-1 So what are the solutions would be in this case? I would like not to write language-specific date.php handler, but to modify date method of JDate class, but what are language-neutral changes would be in order to detect invalid string. Thank you

    Read the article

  • Why is my variable uninitialized in a separate if test?

    - by user2932733
    For the first run, I need to use dates that are six months prior to the last MySQL date $row_recent[0]. For all of the runs after 1, I am using a previous variable to store the previous date and then decrease the date by 6 months. I have confirmed that the first if test produces the expected result. (MySQL date - 6 Months). However, the second if test outputs $startdate6m as the PHP default due to $previous_6m being uninitialized. Any idea why it won't recognize $previous_6m = $initial6m? <?php while ($run_number < 15) { $run_number++; if($run_number == 1){ if ($month <= 06){ $year6m = date("Y", strtotime($row_recent[0]))-1; $month6m = str_pad((12-(6-date("m", strtotime($row_recent[0])))), 2, "0", STR_PAD_LEFT); $startdate6m = "'".$year6m."-".$month6m."-01'"; $end_date = $startdate6m; $initial6m = $startdate6m; } else{ $year6m = date("Y", strtotime($row_recent[0])); $month6m = str_pad(date("m", strtotime($row_recent[0]))-6, 2, "0", STR_PAD_LEFT); $startdate6m = "'".$year6m."-".$month6m."-01'"; $end_date = $startdate6m; $initial6m = $startdate6m; } } $previous_6m = $initial6m; if($run_number > 1){ # 6 Month # Decrement date by 6 months $month6m = date("m", strtotime($previous_6m)); if ($month6m <= 06){ $year6m = date("Y", strtotime($previous_6m))-1; $month6m = str_pad((12-(6-date("m", strtotime($previous_6m)))), 2, "0", STR_PAD_LEFT); $startdate6m = "'".$year6m."-".$month6m."-01'"; $end_date = $startdate6m; } else{ $year6m = date("Y", strtotime($previous_6m)); $month6m = str_pad(date("m", strtotime($previous_6m))-6, 2, "0", STR_PAD_LEFT); $startdate6m = "'".$year6m."-".$month6m."-01'"; $end_date = $startdate6m; } } $previous_6m = $startdate6m; } ?>

    Read the article

  • strtotime not working with TIME?

    - by Prashant
    My mysql column has this datetime value, 2011-04-11 11:00:00 when I am applying strtotime then its returning date less than today,whereas it should be greater than today. also when I am trying this strtotime(date('d/m/Y h:i A')); code, its returning wrong values. Is there any problem with giving TIME in strtotime? Basically I want to do, is to compare my mysql column date with today's date, if its in future then show "Upcoming" else show nothing? Please help and advise, what should I do? Edited code $_startdatetime = $rs['startdatetime']; $_isUpcoming = false; if(!empty($_startdatetime)){ $TEMP_strtime = strtotime($_startdatetime); $TEMP_strtime_today = strtotime(date('d/m/Y h:i A')); if($TEMP_strtime_today < $TEMP_strtime){ $_isUpcoming = true; $_startdatetime = date('l, d F, Y h:i A' ,$TEMP_strtime); } } And the value in $rs['startdatetime'] is 2011-04-11 11:00:00. And with this value I am getting following output. $TEMP_strtime - 1302519600 $TEMP_strtime_today - 1314908160 $_startdatetime - 2011-04-11 11:00:00 $_startdatetime its value is not formatted as the upcoming condition is false, so returning as is mysql value.

    Read the article

  • MySQL DATETIME format comparison - is strtotime needed?

    - by Steffan
    I've been doing something along the lines of.. $dt1 = '1000-01-01 00:00:00'; //really some val from db $dt2 = '1000-01-01 00:00:10'; //another val maybe db maybe formatted if(strtotime($dt1) > strtotime($dt2){ //do something } Is the strtotime needed? can i do a more direct comparison on the datetime formatted strings? i.e. if($dt1 > $dt2){ //do something } Will that always work?

    Read the article

  • strtotime() doesn't work with dd/mm/YYYY format!

    - by Syom
    I really like the strtotime() function, but the user manual doesn't give a complete description of the supported date formats. strtotime('dd/mm/YYYY') doesn't work, it works only with mm/dd/YYYY format. if i have date in dd/mm/YYYY format, ho can i convert it to YYYY-mm-dd? i can do it by using explode() function, but i think tere are better solution. Thanks

    Read the article

  • Using strtotime for dates before 1970

    - by ctroy
    I have a text column in mysql and it stores a date value in the format yyyy-mm-dd. Now, in my php page, I use this code to parse into a date value. date("F j, Y", strtotime($row['value'])); Now, I just read that strtotime() parses values only after January 1, 1970. I have lot of date values before that date. Is there a work around? I don't want to change my database structure.

    Read the article

  • php Warning: strtotime() Error

    - by Kavithanbabu
    I have changed my joomla and wordpress files from old server to new server. In the front end and admin side its working without any errors. But in the Database (phpmyadmin) Section it shows some warning messages like this.. Warning: strtotime() [function.strtotime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Calcutta' for 'IST/5.0/no DST' instead in /usr/share/phpmyadmin/libraries/db_info.inc.php on line 88 Warning: strftime() [function.strftime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Calcutta' for 'IST/5.0/no DST' instead in /usr/share/phpmyadmin/libraries/common.lib.php on line 1483 Can you please suggest, how to hide these warning messages?? Thanks in advance.

    Read the article

  • strtotime fails for valid date

    - by Funky Dude
    i am doing a project where i need to output date of orders. and i do the following inside a for loop <?php echo date('M d, Y g:i A',strtotime($order['Order']['created']));?> for some strange reason, sttotime returns false. (Dec 31, 1969 7:00 PM appears instead.) i made sure $order['Order']['created'] is not empty and is valid. even stranger, that exact same piece of code works fine on the other page, only different is that, that one is not in a loop. but that cant be the reason right? i set timezone to America/New_York and $order['Order']['created'] is mysql timestamp. var_dump on said variable string(27) "2010-06-16 20:12:51"

    Read the article

  • Drupal CCK Date: how to set datetime field's default value to a fix date?

    - by Daj pan spokój
    Hi, I have a CCK datetime field and would like to set its default value to 31 May 2011. When I go to the configuration of the field I can set the default value to Now, Blank or Relative. Relative is to be set by a PHP's strtotime argument. However, it fails when I set it to 31 May 2011 last day of May 2011 (that should normally work according to http://php.net/manual/en/function.strtotime.php) Do You have any idea how to set it to default to 31 May 2011?

    Read the article

  • Adding 30 minutes to time formatted as H:i in PHP

    - by bateman_ap
    Having a nightmare at the moment and just can't see why it isn't working I have a value in the form H:i (ie 10:00, 13:30) etc called $time What I want to do is create two new values, $startTime which is 30 mins before $time and $endTime which is 30 mins after $time I have tried the following but just doesn't seem to want to work $startTime = date("H:i",strtotime('-30 minutes',$time)); $endTime = date("H:i",strtotime('+30 minutes',$time)); If I pass through 10:00 as $time and echo out both $startTime and $endTime I get: $startTime = 00:30 $startTime = 01:30

    Read the article

  • Why is PHP date() adding +1 hour in diff calculation?

    - by Lex
    Hi there, I've got kind of a tricky question, I already searched every related question on Stackoverflow and neither solved my conundrum, although I think I'm running in circles, so here's the question: I've got this code: $val = (strtotime('2010-03-22 10:05:00')-strtotime('2010-03-22 09:00:00')) This returns correctly $val = 3900 (3600 seconds = 1 hour, 300 seconds = 5 mins) But doing this: echo date("H:i",$val)."<br>"; returns 02:05 even doing this: echo date("H:i",3900)."<br>"; returns 02:05 (just to be naively sure) Doing this: echo date("H:i eTO",3900)."<br>"; returns 02:05 System/LocaltimeCET+0100 Which is correct, my timezone is CET and is +1. What's going on? Is date() correcting the timezone for some reason? Or am I doing anything wrong?

    Read the article

  • What's the best way to convert a date and time into a timestamp using php?

    - by user1267980
    I need to convert a date and time into a timestamp with php. The following code shows what I'm currently using: <?php $date="2012-06-29 10:50"; $timestamp = strtotime($date); echo $timestamp; ?> However, when I test the timestamp in an online convertor (http://www.epochconverter.com), the resulting date is 29th June 2012, 8:50, or 2 hours previous. Is it possible that the strtotime() function isn't completely accurate and is just an estimate of the time? If so, are there better methods I could use for getting the exact time? Thanks.

    Read the article

  • How can I get Rails to interpret a text field as a datetime

    - by doctororange
    My database has a datetime field, and I want to be able to create new entries. Obviously the Rails datetime_select helper isn't the most user friendly thing to have in your form. I'd rather have a text field for the datetime (or one for the date, and one for the time) and interpret the inputs like PHP strtotime can. I might just be searching the wrong keywords. Surely this has been discussed in great depth somewhere. Thanks :0)

    Read the article

  • Converting from a day of week to unix time in PHP

    - by Rob
    Hi, I'm trying to get the unix time for date strings that are formatted like so: 'second sunday of march 2010' 'first sunday of november 2010' I was under the impression that strtotime could handle such a string, but apparently not, as this returns false. How can I convert to unix time when given a day of week, which one of those in the month (ie. first, second, etc.), a month and a year.

    Read the article

  • get date from string php - UK date

    - by julio
    Hi-- I have a UK date in the format "06/Apr/2010 13:24" that I need to insert into a mysql db date field. The PHP strtotime function can't handle this string-- has anyone got any ideas other than writing a custom function? Thanks!

    Read the article

1 2 3 4 5 6  | Next Page >