此函数是该函数的别名: DateTime::format()
Andrew Gregory (2009-07-22 03:52:33)
Requirements: PHP5+
To expand on Matt Walsh's example, a simple way to get eBay, or Amazon, web service timestamps is as follows:
<?php
$current_time = urlEncode(subStr(date("c"), 0, 19)."Z");
?>
In other words, take the date/time of now (in ISO 8601 format), discard the trailing Daylight Savings Time specifier, add a "Z" where the DST was and urlEncode the whole thing to convert the time's colons for REST requests (required for amazon, not sure about eBay).
Another way might be to create your own timestamp:
<?php
$current_time = urlEncode(date("Y-m-d")."T".date("H:i:s")."Z");
?>
This way however takes a little more coding on the line.
As far as performance goes, I'm not sure which may be quicker. I just like things to work and work well, don't much care for how fast they are as long as they get the job done :)
A much simpler way to get the eBay, or Amazon, web service timestamp is as follows:
<?php
$current_date = gmDate("Y-m-d\TH:i:s\Z");
?>
Enjoy!
Mike C (2008-07-07 10:23:28)
If you are studying date_format because you want to format a date, consider the power of date(..) !!!!
the mktime article has an example of adding days to a date of your choice and then formatting it:
echo date("M-d-Y", mktime(0, 0, 0, 12, 32, 1997))
where the 32 is like adding 1 day to the 31st .
Matt Walsh (2007-05-04 10:43:16)
The ISO8601 output format doesn't jive with (at least) what eBay expects in its SOAP transactions. eBay wants a UTC time with a 'Z' suffix. That is, eBay (and I'm guessing other web services) will accept "2007-05-04T17:01:17Z" but not "2007-05-04T17:01:17+0000". As it is, the built-in DateTime::ISO8601 format uses the +0000 timezone specifier even when in a UTC timezone.
As a workaround, I do this:
<?php
function get_ebay_UTC_8601(DateTime $time)
{ $t = clone $time;
$t->setTimezone(new DateTimeZone("UTC"));
return $t->format("Y-m-d\TH:i:s\Z");
}
?>