DateInterval::format() - php 日期时间类
DateInterval::format()
(PHP 5 >= 5.3.0, PHP 7)
Formats the interval
说明
publicDateInterval::format(string $format): stringFormats the interval.
参数
$format$formatcharacter | Description | Example values |
---|---|---|
% | Literal% | % |
Y | Years, numeric, at least 2 digits with leading 0 | 01,03 |
y | Years, numeric | 1,3 |
M | Months, numeric, at least 2 digits with leading 0 | 01,03,12 |
m | Months, numeric | 1,3,12 |
D | Days, numeric, at least 2 digits with leading 0 | 01,03,31 |
d | Days, numeric | 1,3,31 |
a | Total number of days as a result of aDateTime::diff()or(unknown)otherwise | 4,18,8123 |
H | Hours, numeric, at least 2 digits with leading 0 | 01,03,23 |
h | Hours, numeric | 1,3,23 |
I | Minutes, numeric, at least 2 digits with leading 0 | 01,03,59 |
i | Minutes, numeric | 1,3,59 |
S | Seconds, numeric, at least 2 digits with leading 0 | 01,03,57 |
s | Seconds, numeric | 1,3,57 |
F | Microseconds, numeric, at least 6 digits with leading 0 | 007701,052738,428291 |
f | Microseconds, numeric | 7701,52738,428291 |
R | Sign "-" when negative,"+" when positive | -,+ |
r | Sign "-" when negative, empty when positive | -, |
返回值
Returns the formatted interval.
注释
Note:TheDateInterval::format()method does not recalculate carry over points in time strings nor in date segments. This is expected because it is not possible to overflow values like"32 days"which could be interpreted as anything from"1 month and 4 days"to"1 month and 1 day".
更新日志
版本 | 说明 |
---|---|
7.1.0 | TheFandfformat characters were added. |
范例
Example #1DateIntervalexample
以上例程会输出:
4 days
Example #2DateIntervaland carry over points
以上例程会输出:
32 days
Example #3DateIntervalandDateTime::diff()with the %a and %d modifiers
以上例程会输出:
31 total days 1 month, 0 days
参见
- DateTime::diff() Returns the difference between two DateTime objects
How to easy recalculate carry over points:
Be aware that your default timezone can sometimes alter the result of a diff so that the returned months/days are incorrect. There is a bug report at: http://bugs.php.net/bug.php?id=52480
Quick class to allow you to input a time in any unit, and have it recalculate in to different denominations (for example, seconds to hours, minutes and seconds):
glavic, this does not eliminate the problem of "32 days", if you use your class for normalizing intervals of days, because the result will depend on the current month which is used for DateTime by default. And if that does not matter (because the interval is not that long) you don't have to call diff() to get the same recalculation: $DT=new DateTime('0000-01-01'); $DT->add($oInt); echo($DT->format('Y-m-d H:i:s'));
The fact that $dateTime->diff(new DateTime()) returns a DateInterval and the interval is something where you don't get any useful number is somebit annoying.
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!