php當月的第一天
A. 關於一個php判斷當月開始和結束的時間戳的問題
下面的代碼調試通過,絕對保證正確,希望你能夠看明白:
<?php
$today=localtime(time(), true);
$m_start=mktime(0,0,0,$today['tm_mon'],1,$today['tm_year']);
if ($today['tm_mon']==11){
$today['tm_mon']=0;
$today['tm_year']++;
}else $today['tm_mon']++;
$m_stop=mktime(0,0,0,$today['tm_mon'],1,$today['tm_year'])-1;
//顯示結果
print_r(localtime($m_start, true));
print_r(localtime($m_stop, true));
?>
B. 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標簽創建日期
不知是否正確,轉自我的一個朋友
C. PHP DATE 如何取得當月的第一天和最後一天
<?php
$first_day=date('Y-m-01');//第一天,肯定是1號了,這是送分的
$last_day=date('Y-m-t');//最後一天,t表示每月有多少天,也相當於送分的……
echo"第一天:{$first_day}最後一天:{$last_day}";
D. php獲取當月天數及當月第一天及最後一天、上月第一天及最後一天實現方法是什麼
date('Y-m-01', strtotime('-1 month')); //上個月第一天
date('Y-m-t', strtotime('-1 month')); //上個月最後一天
$BeginDate=date('Y-m-01', strtotime(date("Y-m-d"))); //當月第一天
date('Y-m-d', strtotime("$BeginDate +1 month -1 day")); //當月最後一天
E. php獲取當年的每個月的第一天和最後一天時間戳的函數
/**
* 獲取指定月份的第一天開始和最後一天結束的時間戳
*
* @param int $y 年份 $m 月份
* @return array(本月開始時間,本月結束時間)
*/
function mFristAndLast($y="",$m=""){
if($y=="") $y=date("Y");
if($m=="") $m=date("m");
$m=sprintf("%02d",intval($m));
$y=str_pad(intval($y),4,"0",STR_PAD_RIGHT);
$m>12||$m<1?$m=1:$m=$m;
$firstday=strtotime($y.$m."01000000");
$firstdaystr=date("Y-m-01",$firstday);
$lastday = strtotime(date('Y-m-d 23:59:59', strtotime("$firstdaystr +1 month -1 day")));
return array("firstday"=>$firstday,"lastday"=>$lastday);
}
F. 如何獲取當前月份的下一月的第一天 php
可以這樣獲取:echo date("Y-m-01",strtotime("+1 month"));
G. php有沒相關函數可以獲取給定日期的上個月的第一天及最後一天
沒有,可以取當前月的第一天00:00的時間戳,然後減24小時,再date即是上個月的最後一天。
如:
$prev_month_last_day = date("Y/m/d", strtotime(date("Y-m-1")) - 86400);
list($year, $month, $day) = explode("/", $prev_month_last_day);
$prev_month_first_day = $year . '/' . $month . '/1';
printf("first day of prev month is : %s\nlast day of prev month is : %s\n", $prev_month_first_day, $prev_month_last_day);
H. 怎麼用PHP獲得當前月的1號是從星期幾開始的呢急急急!!!!!
$xingqi = Date("w", strtotime(Date("Y-n-1"))) ;
switch($xingqi)
{
case 0: $xingqi = "星期日";
break;
case 1: $xingqi = "星期一";
break;
case 2: $xingqi = "星期二";
break;
case 3: $xingqi = "星期三";
break;
case 4: $xingqi = "星期四";
break;
case 5: $xingqi = "星期五";
break;
case 6: $xingqi = "星期六";
break;
default: echo "獲取不到星期,有錯誤!";
}
echo "本月的第一天是: ".$xingqi;
I. php求當前季度的第一天和最後一天
<?php
//第一天
function GetInceDay()
{
$month = date("m");
if ($month >=1 && $month < 4)
{
return "1月1日";
}
else if ($month >= 4 && $month < 7)
{
return "4月1日";
}
else if ($month >= 7 && $month < 10)
{
return "7月1日";
}
else
{
return "10月1日";
}
return "";
}
//最後一天
function GetEndDay()
{
$month = date("m");
if ($month >= 1 && $month < 4)
{
return "3月31日";
}
else if ($month >= 4 && $month < 7)
{
return "6月30日";
}
else if ($month >= 7 && $month < 10)
{
return "9月30日";
}
else
{
return "12月31日";
}
return "";
}
?>
<?php echo "本季度第一天:".GetInceDay()."<br>";?>
<?php echo "本季度最後一天:".GetEndDay()."<br>";?>
J. php中用time()函數存入時間,如何查詢當月的數據
這個time()函數是將時間保存成時間戳格式,則要查當月數據,只要查當月第一天到當月最後一天的之間的數據即可。
假設這個用來判斷的欄位是date
sql語句
SELECT ………… WHERE………… `date` >= 本月第一天的time值 AND `date` < 下個月第一天的time值
所以這里就只要獲取當月第一天以及下個月第一天的時間戳
具體如下:
<?php
$cur = date('Y-m',time());//當天年月
$cur_y = date('Y',time());//當天年份
$cur_m = date('m',time());//當天月份
$cur_f = $cur . '-1';//本月首日
$first = strtotime($cur_f);//時間戳最小值,本月第一天時間戳
//下月首日
if($cur_m>=12){
$cur_n = ($cur_y+1) . '-1-1';
}else{
$cur_n = $cur_y . '-' . ($cur_m+1) . '-1';
}
$last = strtotime($cur_n);//時間戳最大值,下個月第一天時間戳
?>
再把$first 和 $last 放入sql語句裡面就可以查詢到數據了