Detailed explanation of common methods of php DateTime

怪我咯
Release: 2023-03-12 21:42:01
Original
1701 people have browsed it

This article organizes some methods used by DateTime objects to facilitate everyone's search and browsing. You can refer to them if necessary.

Preface

Placing \ in front of the instantiated object indicates that the native class is used in the namespace. If the namespace is not used, you can delete the previous \

1. Output the current time

$datetime = new \DateTime;
print_r($datetime->format('Y-m-d H:i:s'));
Copy after login

2. Output the given time

$datetime = new \DateTime('2016-06-13');
print_r($datetime);
Copy after login

3. Format the given time to the time you want

$datetime = \DateTime::createFromFormat('Ymd', '20160618');
print_r($datetime->format('Y-m-d'));
Copy after login

4. Output Unix timestamp format (method 1 will return a negative number if it is before 1990, and method 2 will return false)

//方法1(php5.2):
$datetime = new \DateTime();
echo $datetime->format('U');exit;

//方法2(php5.3)推荐
$datetime = new \DateTime();
echo $datetime->getTimestamp();exit;
Copy after login

5. Format to the given time based on the given timestamp

$datetime = new \DateTime();
$datetime->setTimestamp(1465783744);
echo $datetime->format('Y-m-d H:i:s');
Copy after login

6. Compare two dates and times, compare year to year, compare month to month...

$datetime1 = new \DateTime('2016-01-01 10:11:18');
$datetime2 = new \DateTime('2017-05-11 22:21:21');
$interval = $datetime1->diff($datetime2);
print_r($interval->format('%Y'));//%表示使用格式化,R表示是大于这个日期(+),还是小于这个日期(-),a表示大于或小于多少天,时分秒正常使用y,m,d,h,i,s
Copy after login

7. Create a time with a length of several days ago

DateInterval constructionThe parameter of the function is a string representing the time interval agreement. This time interval agreement starts with the letter P, followed by integer, and finally a period identifier qualifying the preceding integer. Valid period identifiers are as follows: Y (year) M (month) D (day) W (week) H (hour) M (minute) S (second) The interval agreement can have both time and date, if time is needed Add the letter T between the date and time. For example, the interval convention P2D means an interval of two days, and the interval convention P2DT5H2M means an interval of two days, five hours and two minutes.

$datetime = new \DateTime();
$interval = new \DateInterval('P2DT5H');
//或者使用createFromDateString方法
//$interval = \DateInterval::createFromDateString('1 month');
//修改DateTime实例
$datetime->add($interval);
echo $datetime->format('Y-m-d H:i:s');
Copy after login

8. Create the time a few days ago

$datetime = new \DateTime();
$interval = new \DateInterval('P2DT5H');
$datetime->sub($interval);
echo $datetime->format('Y-m-d H:i:s');
//ps:有个modify方法,这个方法是减去30,并不是像前推1天,输出的还是12月
$datetime = new \DateTime('2014/12/31');
$datetime->modify( '-1 month' );
print_r($datetime);exit;
Copy after login

9. Reset the time of the current DateTime object Different dates, pass year, month, day

$datetime = new \DateTime();
$datetime->setDate(2015, 2, 28);
echo $datetime->format('Y-m-d');exit;
Copy after login

10. Reset the time of the current DateTime object to different times, pass hours, minutes, seconds ( Optional parameters)

$datetime = new \DateTime();
$datetime->setTime(20, 20, 24);
echo $datetime->format('Y-m-d H:i:s');exit;
Copy after login

11. Change the time zone before formatting the time

$timezone = new \DateTimeZone('Asia/Calcutta');
$datetime = new \DateTime();
$datetime->setTimezone($timezone);
print_r($datetime->format('Y-m-d H:i:s'));exit;
Copy after login

12. Return the time zone

$date = new \DateTime(null, new DateTimeZone('Asia/Shanghai'));
$tz = $date->getTimezone();
echo $tz->getName();
Copy after login

13. Calculate the offset value of two time zones

$dateTimeZoneTaipei = new \DateTimeZone("Asia/Taipei");
$dateTimeZoneJapan = new \DateTimeZone("Asia/Tokyo");
$dateTimeTaipei = new \DateTime("now", $dateTimeZoneTaipei);
$dateTimeJapan = new \DateTime("now", $dateTimeZoneJapan);
$timeOffset = $dateTimeZoneJapan->getOffset($dateTimeTaipei);
print_r($timeOffset);exit;
Copy after login

14. Return the time interval, how long

$interval = new \DateInterval('P2Y4DT6H8M');
echo $interval->format('%d days');
Copy after login

15. Iterate and output the days before the current date.

Constructor method of DatePeriod classAccepts three parameters and must provide a DateTime instance, indicating the date and time when the iteration starts, and a DateInterval instance, indicating the next date The interval between it and time is an integer, indicating the total number of iterations. The fourth parameter is optional and is used to explicitly specify the end date and time of the cycle. If you want to exclude the start date and time when iterating, you can put the last part of the constructor One parameter is set to DatePeriod::EXCLUDE_START_DATEConstant:

$datetime = new \DateTime();
$interval = \DateInterval::createFromDateString('-1 day');
$period = new \DatePeriod($datetime, $interval, 3);
foreach ($period as $date) {
  echo $date->format('Y-m-d'), PHP_EOL;
}
Copy after login

The above is the detailed content of Detailed explanation of common methods of php DateTime. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template