導航:首頁 > 編程語言 > php日期運算

php日期運算

發布時間:2024-12-23 14:25:20

php 計算兩個日期相隔多少年,多少月,多少天

1、首先計算2020-02-10和2020-02-01日間隔的天數。使瞎搜用strtotime:<?php $days = (strtotime('2020-02-10') - strtotime('2020-02-01'))/86400; echo $days;。

Ⅱ php日歷模塊的運算邏輯求解!如何求日期對應的星期幾!

現在以2010年6月14日為例說明。6月份共有30天,在這個日歷表中共5行,首先需要確定當前所在的日期(當然也可以指定一個日期),比如14日,通過表格可以知道它在第3行對應星期一那列(第3周)。通常每個月第1天不是在表格開始的位置,位置並不固定,同樣不固定的還有每個月的周數,有時候是4周,有時候是5周。這樣,想要完成這個日歷表格就需要確定一些基礎的日期變數,下面具體來看需要設定的基礎變數。

PHP提供了date()函數,該函數提供了豐富的日期處理功能。現在需要獲得的數據有兩個,第一個是當月的總天數;第二個是該月的第一天所在星期中的第幾天,數字表示0(表示星期天)到6(表示星期六)。通過date()函數可以很容易獲得上面的數據。

<?php

//date()函數的基本用法

$year = date('Y'); //獲得年份,例如2006

$month = date('n'); //獲得月份,例如04

$day = date('j'); //獲得日期,例如3

?>

通過mktime()函數和date()函數獲得當月的總天數。

//獲得當月的總天數

$daysInMonth = date("t",mktime(0,0,0,$month,1,$year));

同樣是組合使用mktime()函數和date()函數,獲得該月的第一天所在星期中的第幾天,數字表示0(表示星期天)到6(表示星期六)。

//獲得每個月的第一天,例如4

$firstDay = date("w", mktime(0,0,0,$month,1,$year));

現在重新來觀察下這個日歷表格,我們發現,表格中的值是從1到x(當月的總天數)。我們可以形象地通過一個坐標來表示每一個位置(x,y),表格的起始位置是(0,0),結束位置是(5,4),當月第一天的起始位置是(0,3)。現在來創建一個二維數組來存儲對應的日期。

(1)需要獲得表格的數目。

//計算數組中的日歷表格數

$tempDays = $firstDay + $daysInMonth;

(2)需要算出該月一共有幾周(即表格的行數)。

//獲得表格行數

$weeksInMonth = ceil($tempDays/7);

(3)在獲得行數的變數之後,創建一個二維數組用來存放日期信息,代碼如下:

<?php

for($j=0;$j<$weeksInMonth;$j++)

{

for($i=0;$i<7

;$i++)

{

$counter ++;

$week [$j] [$i] = $counter;

}

}

?>

(4)細心的讀者可能發現,上面的代碼其實是一個雛型,因為它處理出來的數據並沒有過濾那些空白的表格單元。下面來繼續改造下這段代碼,加入過濾和構造的部分。改造後的代碼如下:

<?php

//創建日期二維數組

for($j = 0; $j < $weeksInMonth; $j ++) {

for($i = 0; $i < 7; $i ++) {

$counter ++;

$week [$j] [$i] = $counter;

//日期偏移量

$week [$j] [$i] -= $firstDay;

if (($week [$j] [$i] < 1) || ($week [$j] [$i] > $daysInMonth)) {

$week [$j] [$i] = "";

}

}

}

?>

(5)在獲得正確的二維數組之後,就可以通過foreach()函數將存儲的日期信息遍歷出來,同時插入HTML標簽創建日期

不知是否正確,轉自我的一個朋友

Ⅲ 用php計算兩個日期相差多少

用php計算給定兩個日期相差多少天: 計算方法不只下面介紹的這些,只是一些比較常規的方法: 上面的php時間日期函數strtotime已經把字元串日期變成了時間戳,這樣只要讓兩數值相減,然後把秒變成天就可以了,比較的簡單,如下: $days=round(($enddate-$startdate)/3600/24) ; echo $days; //days為得到的天數;?下面介紹另外一種方法: 上面判斷的是兩個日期的大小,下面則是判斷生日的程序代碼,得到的$n就是相距生日的天數. $birthday=「生日」; $birthday = preg_replace('/\d+/', Date('Y'), $birthday, 1); $d = 60*60*24; $n= floor((strtotime($birthday)-time())/$d);$n=$n+1;還有如果相比的是現在的時間,就可以用time()函數,得到的就是現在的時間戳. 第二種情況呢,就是有資料庫,這樣就相對比較容易一些了!如果是MSSQL可以使用觸發器!用專門計算日期差的函數datediff()計算便可! 如果是MYSQL那就用兩個日期欄位的時間戳值,進行計算後便可得到相差的天數了.方法和上面的代碼很像.

Ⅳ PHP用今天日期計算出30天後的日期!

time()就是你現在的時間戳。
30之後就是
$time=time()+30*24*3600;
$date=date('y-m-d H:m:s',$time);
七天類似了,
$time=time()+7*24*3600;
$date=date('y-m-d H:m:s',$time);

Ⅳ PHP計算一年多少個星期和每周的開始和結束日期

PHP計算一年多少個星期和每周的開始和結束日期?方法如下:
方法一:
<php
header("Content-type:text/html;charset=utf-8");
date_default_timezone_set("Asia/Shanghai");
$year = (int)$_GET['year'];
$week = (int)$_GET['week'];
$weeks = date("W", mktime(0, 0, 0, 12, 28, $year));
echo $year . '年一共有' . $weeks . '周<br />';
if ($week > $weeks || $week <= 0)
{
$week = 1;
}
if ($week < 10)
{
$week = '0' . $week;
}
$timestamp['start'] = strtotime($year . 'W' . $week);
$timestamp['end'] = strtotime('+1 week -1 day', $timestamp['start']);
echo $year . '年第' . $week . '周開始時間戳:' . $timestamp['start'] . '<br />';
echo $year . '年第' . $week . '周結束時間戳:' . $timestamp['end'] . '<br />';
echo $year . '年第' . $week . '周開始日期:' . date("Y-m-d", $timestamp['start']) . '<br />';
echo $year . '年第' . $week . '周結束日期:' . date("Y-m-d", $timestamp['end']);
?>
方法二: <?php
header("Content-type:text/html;charset=utf-8");
function getIsoWeeksInYear($year)
{
$date = new DateTime;
$date->setISODate($year, 53);
return ($date->format("W") === "53" ? 53 : 52);
}
function weekday($custom_date)
{
$week_start = date('d-m-Y', strtotime('this week monday', $custom_date));
$week_end = date('d-m-Y', strtotime('this week sunday', $custom_date));
$week_array[0] = $week_start;
$week_array[1] = $week_end;
return $week_array;
}
echo '<br> Weeks in 2013<br>' . getIsoWeeksInYear(2013);
$weekday = weekday(strtotime(date('d-m-Y', strtotime('5-8-2013'))));
echo '<br> 10-8-2013';
echo '<br>Start: ' . $weekday[0];
echo '<br>End: ' . $weekday[1];
?>
或者方法三:
function get_week($year) {
$year_start = $year . "-01-01";
$year_end = $year . "-12-31";
$startday = strtotime($year_start);
if (intval(date('N', $startday)) != '1') {
$startday = strtotime("next monday", strtotime($year_start)); //獲取年第一周的日期
}
$year_mondy = date("Y-m-d", $startday); //獲取年第一周的日期

$endday = strtotime($year_end);
if (intval(date('W', $endday)) == '7') {
$endday = strtotime("last sunday", strtotime($year_end));
}

$num = intval(date('W', $endday));
for ($i = 1; $i <= $num; $i++) {
$j = $i -1;
$start_date = date("Y-m-d", strtotime("$year_mondy $j week "));

$end_day = date("Y-m-d", strtotime("$start_date +6 day"));

$week_array[$i] = array (
str_replace("-",
".",
$start_date
), str_replace("-", ".", $end_day));
}
return $week_array;
}

函數get_week()通過傳入參數$year年份,獲取當年第一天和最後一天所在的周數,計算第一周的日期,通過循環獲取每一周的第一天和最後一天的日期。最後返回是一個數組。
想得到指定周數的開始日期和結束日期,比如2011年第18周的開始日期和結束日期,代碼如下:

復制代碼 代碼如下:

$weeks = get_week(2011);
echo '第18周開始日期:'.$weeks[18][0].'';
echo '第18周結束日期:'.$weeks[18][1];

最後輸出結果:

第18周開始日期:2011.05.02
第18周結束日期:2011.05.08

閱讀全文

與php日期運算相關的資料

熱點內容
精品php源碼 瀏覽:956
自己編寫雲伺服器搶紅包 瀏覽:200
java解壓縮文件加密 瀏覽:884
dlink列印伺服器默認地址 瀏覽:350
php休眠函數 瀏覽:369
金蝶如何打開伺服器 瀏覽:762
e4a手游輔助源碼 瀏覽:775
什麼app可以實時直播 瀏覽:103
蘋果13的app閃退什麼原因 瀏覽:772
尾盤選股源碼公式 瀏覽:447
php日期運算 瀏覽:929
天龍八部長歌伺服器什麼時候開的 瀏覽:198
鬼泣4模型在那個文件夾 瀏覽:226
單片機的串列口 瀏覽:55
phpjson轉化為數組 瀏覽:266
pdf導入excel 瀏覽:427
蘋果xsmax信任app在哪裡設置 瀏覽:52
自動外鏈php源碼 瀏覽:243
我的世界新手獎勵箱命令 瀏覽:145
linux更新vim 瀏覽:997