# Share The PHP code for calculating the number of days for different dates. _ PHP Tutorial

Source: Internet
Author: User
Share The PHP code for calculating the number of days for two different dates ,. This article describes how to use PHP to calculate the number of days for two different dates. Share it with you for your reference. The specific implementation method is as follows: p shares the PHP code for calculating the number of days for two different dates,

This example describes how php calculates the number of days for two different dates. Share it with you for your reference. The specific implementation method is as follows:

`<?php\$date1 = date( 'Y-m-d' );\$date2 = "2015-12-04";\$diff = abs(strtotime(\$date2) - strtotime(\$date1));\$years = floor(\$diff / (365*60*60*24));\$months = floor((\$diff - \$years * 365*60*60*24) / (30*60*60*24));\$days = floor((\$diff - \$years * 365*60*60*24 - \$months*30*60*60*24)/ (60*60*24));printf("%d years, %d months, %d days\n", \$years, \$months, \$days);-------------------------------------------------------- OR\$date1 = new DateTime("2007-03-24");\$date2 = new DateTime("2009-06-26");\$interval = \$date1->diff(\$date2);echo "difference " . \$interval->y . " years, " . \$interval->m." months, ".\$interval->d." days "; // shows the total amount of days (not pided into years, months and days like above)echo "difference " . \$interval->days . " days ";-------------------------------------------------------- OR    /** * Calculate differences between two dates with precise semantics. Based on PHPs DateTime::diff() * implementation by Derick Rethans. Ported to PHP by Emil H, 2011-05-02. No rights reserved.*/function _date_range_limit(\$start, \$end, \$adj, \$a, \$b, \$result){ if (\$result[\$a] < \$start) {  \$result[\$b] -= intval((\$start - \$result[\$a] - 1) / \$adj) + 1;  \$result[\$a] += \$adj * intval((\$start - \$result[\$a] - 1) / \$adj + 1); } if (\$result[\$a] >= \$end) {  \$result[\$b] += intval(\$result[\$a] / \$adj);  \$result[\$a] -= \$adj * intval(\$result[\$a] / \$adj); } return \$result;}function _date_range_limit_days(\$base, \$result){ \$days_in_month_leap = array(31, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); \$days_in_month = array(31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); _date_range_limit(1, 13, 12, "m", "y", &\$base); \$year = \$base["y"]; \$month = \$base["m"]; if (!\$result["invert"]) {  while (\$result["d"] < 0) {   \$month--;   if (\$month < 1) {    \$month += 12;    \$year--;   }   \$leapyear = \$year % 400 == 0 || (\$year % 100 != 0 && \$year % 4 == 0);   \$days = \$leapyear ? \$days_in_month_leap[\$month] : \$days_in_month[\$month];   \$result["d"] += \$days;   \$result["m"]--;  } } else {  while (\$result["d"] < 0) {   \$leapyear = \$year % 400 == 0 || (\$year % 100 != 0 && \$year % 4 == 0);   \$days = \$leapyear ? \$days_in_month_leap[\$month] : \$days_in_month[\$month];   \$result["d"] += \$days;   \$result["m"]--;   \$month++;   if (\$month > 12) {    \$month -= 12;    \$year++;   }  } } return \$result;}function _date_normalize(\$base, \$result){ \$result = _date_range_limit(0, 60, 60, "s", "i", \$result); \$result = _date_range_limit(0, 60, 60, "i", "h", \$result); \$result = _date_range_limit(0, 24, 24, "h", "d", \$result); \$result = _date_range_limit(0, 12, 12, "m", "y", \$result); \$result = _date_range_limit_days(&\$base, &\$result); \$result = _date_range_limit(0, 12, 12, "m", "y", \$result); return \$result;}/** * Accepts two unix timestamps. */function _date_diff(\$one, \$two){ \$invert = false; if (\$one > \$two) {  list(\$one, \$two) = array(\$two, \$one);  \$invert = true; } \$key = array("y", "m", "d", "h", "i", "s"); \$a = array_combine(\$key, array_map("intval", explode(" ", date("Y m d H i s", \$one)))); \$b = array_combine(\$key, array_map("intval", explode(" ", date("Y m d H i s", \$two)))); \$result = array(); \$result["y"] = \$b["y"] - \$a["y"]; \$result["m"] = \$b["m"] - \$a["m"]; \$result["d"] = \$b["d"] - \$a["d"]; \$result["h"] = \$b["h"] - \$a["h"]; \$result["i"] = \$b["i"] - \$a["i"]; \$result["s"] = \$b["s"] - \$a["s"]; \$result["invert"] = \$invert ? 1 : 0; \$result["days"] = intval(abs((\$one - \$two)/86400)); if (\$invert) {  _date_normalize(&\$a, &\$result); } else {  _date_normalize(&\$b, &\$result); } return \$result;}\$date = "2014-12-04 19:37:22";echo '';print_r( _date_diff( strtotime(\$date), time() ) );echo ''; ?>`

Articles you may be interested in:
• Php calculates the time difference between two dates (year, month, and day)
• How to use php to calculate the difference between two dates
• How to calculate the number of days for two different dates in php
• PHP uses strtotime to calculate the number of days between two given dates
• Php method for determining the number of months between two dates

Example: This article describes how php calculates the number of days for two different dates. Share it with you for your reference. The specific implementation method is as follows: p...

Related Keywords:
Related Article

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

## A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

• #### Sales Support

1 on 1 presale consultation

• #### After-Sales Support

24/7 Technical Support 6 Free Tickets per Quarter Faster Response

• Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.