Changing time format php - php

I need to get the date/time format produced from a date / picker which currently outputs in this format 06-15-2011 09:35:32
The format I require is the same as what get produced from the function time() = 1308126939
I have look everywhere for this answer and cannot find.

use the strtotime function
echo strtotime('06-15-2011 09:35:32');
Good luck!

Try using strtotime() function which converts text datetime notation into Unix timestamp.

The timestamp from time() is a unix format representing the number of seconds since 1st January 1970. It can be replicated in date() as $timestamp = date("U");
You should be able to convert it using the strtotime() command.
$myDate = "06-15-2011 0-9:35:32"
$timestamp = strtotime($myDate)
You can then go on to format that in other ways using the date() function.

Related

Format MySQL timestamp to ics format

I am trying to convert some MySQL timestamps to the official .ics format. Unfortunately, I always get the output "19700101T013334Z".
MySQL format: 2014-09-29 18:00:00
This is my PHP function, that should convert the dates accordingly:
function dateToCal($timestamp) {
return date('Ymd\THis\Z', $timestamp);
}
What am I doing wrong?
date() expects a Unix timestamp as the second parameter. You can use strtotime() to convert $timestamp to a Unix timestamp for you.
function dateToCal($timestamp) {
return date('Ymd\THis\Z', strtotime($timestamp));
}
It might be easier, and better, if you converted that date to a Unix timestamp in your query using UNIX_TIMESTAMP().
I know you've already got an answer, but you can also do this in the database:
SELECT FORMAT_DATE("2014-09-29 18:00:00", "%Y%m%dT%H%i%sZ");
The Z at the end indicates UTC so if you're storing your dates using system time you'll want to convert that as well.
You have to convert MySql's datetime to a Unix timestamp befor you can use it -
function dateToCal($timestamp) {
date('Ymd\THis', strtotime($timestamp));
}
You really do not have to have the \Z in the function.

PHP: how to create date before the Epoch (1970) using Date instead of DateTime?

In my PHP script I've got a function handling birthdays like so:
$dateTime = \DateTime::createFromFormat('U', $time);
The problem is that this returns false with negative $time numbers (i.e. dates before 1-1-1970). In the PHP docs there's a comment saying that indeed
Note that the U option does not support negative timestamps (before
1970). You have to use date for that.
I'm unsure of how to use Date to get the same result as DateTime::createFromFormat() gives though. Does anybody have a tip on how to do this?
If you just need to format a UNIX timestamp as a readable date, date is simple to use:
// make sure to date_default_timezome_set() the timezone you want to format it in
echo date('Y-m-d H:i:s', -12345);
If you want to create a DateTime instance from a negative UNIX timestamp, you can use this form of the regular constructor:
$datetime = new DateTime('#-12345');

How to convert yyyy-MM-ddTHH:mm:ssZ to yyyy-MM-dd HH:mm:ss?

Paypal returns a timestamp of the following format:
yyyy-MM-ddTHH:mm:ssZ
And I don't quite know what to do with it...
How can I convert it to yyyy-MM-dd HH:mm:ss using my local timezone in php?
I'm tempted to preg_replace the mysterious letters, but something tells me there must a better way. There also appears to be 8 hours difference to my zone which I'm not sure how to substract.
Use DateTime class to do your magic.
$date = new DateTime('2012-09-09T21:24:34Z');
$date->format('Y-m-d'); # read format from date() function
You can use strtotime() to get a UNIX timestamp. From there you can do whatever you need: DateTime object, date(), etc.
Example with date():
echo date('r', strtotime('2012-09-10T10:00:00Z'));

PHP strtotime() function that accepts a format?

strtotime() in PHP works great if you can provide it with a date format it understands and can convert, but for example you give it a UK date it fails to give the correct unix timestamp.
Is there any PHP function, official or unofficial, that can accept a format variable that tells the function in which format the date and time is being passed?
The closest I have come to doing this is a mixture of date_parse_from_format() and mktime()
// Example usage of the function I'm after
//Like the date() function but in reverse
$timestamp = strtotimeformat("03/05/2011 16:33:00", "d/m/Y H:i:s");
If you have PHP 5.3:
$date = DateTime::createFromFormat('d/m/Y H:i:s', '03/05/2011 16:33:00');
echo $date->getTimestamp();
You are looking for strptime, I think. you can use it to parse the date and then use mktime if you need a UNIX timestamp.
function strotimeformat($date, $format) {
$d = strptime($date, $format);
return mktime($d['tm_hour'], $d['tm_min'], $d['tm_sec'],
$d['tm_mon'], $d['tm_mday'], $d['tm_year']);
}
This will work with PHP 5.1 and onwards.
strtotime assumes it's a US date/time when using / as the separator. To get it to think it's a Euro date/time, use - or . as the date separator. You can change the /s to -s or .s with a simple str_replace()

date formatting in php

I have a string as mentioned below:
$ts = "3/11/09 11:18:59 AM";
which I got using the date() function.
Now I need to convert this to a readable format like below
11-Mar-2009
I have tried everything using date(). How can I achieve this?
You need to convert it to something you can use for further formatting. strtotime() is a good start, which yields a unix timestamp. You can format that one using strftime() then.
strftime("%d-%b-%G", strtotime($ts));
Actually I tried doing this and it worked.
echo date("d-M-Y", strtotime($ts));
If you initially get the string from the date() function, then pass on formatting arguments to the date-function instead:
date('Y-m-d')
instead of converting the string once again.
EDIT: If you need to keep track of the actual timestamp, then store it as a timestamp:
// Store the timestamp in a variable. This is just an integer, unix timestamp (seconds since epoch)
$time = time();
// output ISO8601 (maybe insert to database? whatever)
echo date('Y-m-d H:i', $time);
// output your readable format
echo date('j-M-Y', $time);
Using strtotime() is convinient but unessecary parsing and storage of a timerepresentation is a stupid idea.
You can use the date() function to generate the required format directly, like so:
date("j-M-Y");
See www.php.net/date for all the possible formats of the output of the date() function.

Categories