關於獲取上一月的第一天及最後一天
阿新 • • 發佈:2019-02-15
PHP除錯的時候出現了警告:
It is not safe to rely on the system解決方法,其實就是時區設定不正確造成的,本文提供了3種方法來解決這個問題。
實際上,從PHP 5.1.0開始當對使用date()等函式時,如果timezone設定不正確,在每一次呼叫時間函式時,都會產生E_NOTICE 或者 E_WARNING 資訊,而又在php中,date.timezone這個選項,預設情況下是關閉的,無論用什麼php命令都是格林威治標準時間,但是PHP5.3中如果沒有設定部分時間類函式也會強行丟擲了這個錯誤的。
PS:現在由於大部分人使用VPS/雲主機,需要自己配置的環境的就更加會容易出現這個情況。
建議:不熟悉PHP環境還是用比較成熟的一鍵安裝包吧。
方法1:
(最好的方法)在php.ini里加上找到date.timezone項,設定date.timezone = “Asia/Shanghai”,重啟環境就ok了。
方法2:
在需要用到這些時間函式的時候,在頁面新增date_default_timezone_set(“PRC”);
方法3:
在頁頭加上設定時區ini_set(‘date.timezone’,’Asia/Shanghai’);
使用函式及陣列來獲取當月第一天及最後一天,比較實用
function getthemonth($date)
{
$firstday = date('Y-m-01', strtotime($date ));
$lastday = date('Y-m-d', strtotime("$firstday +1 month -1 day"));
return array($firstday,$lastday);
}
$today = date("Y-m-d");
$day=getthemonth($today);
echo "當月的第一天: ".$day[0]." 當月的最後一天: ".$day[1];
echo "<br/>";
獲取本月第一天和最後一天的兩種方法
$BeginDate=date('Y-m-01', strtotime(date ("Y-m-d")));
echo "本月的第一天為".date('Y-m-01',strtotime(date("Y-m-d")))."<br>"; //獲取本月第一天
echo date('Y-m-d',mktime(0,0,0,date('m'),1,date('Y'))).'<br>';
echo "本月的最後一天為".date('Y-m-d', strtotime("$BeginDate +1 month -1 day"))."<br>"; //獲取本月最後一天
echo date('Y-m-d',mktime(0,0,0,date('m')+1,0,date('Y')))."<br>";
獲取上月第一天和最後一天的兩種方法
echo "上一個月的第一天".date('Y-m-01', strtotime('-1 month'))."<br>"; //獲取上一個月的的第一天
echo date('Y-m-d',mktime(0,0,0,date('m')-1,1,date('Y'))).'<br>';
echo "上一個月的最後一天".date('Y-m-t', strtotime('-1 month'))."<br>"; //獲取上一個月的最後一天
echo date('Y-m-d',mktime(0,0,0,date('m'),0,date('Y')))."<br>";
<?php
// $number = 123;
// $txt = sprintf("%f",$number);
// echo $txt; //123.000000
header('content-type:text/html;charset=utf-8');
date_default_timezone_set('Asia/Shanghai'); //設定時區
//echo "date(Y-m-d)輸出為".date("Y-m-d")."<br>";
//echo "date(Y-m-d h:i:s),time()輸出為".date('y-m-d h:i:s',time())."<br>";
//echo date('l')."<br>"; //tuesday
$year = date('y'); //17
$month = sprintf('%02d',date('m') - 1); //05
//echo strtotime("17-05-1")."<br>"; //1493568000
$BeginDate=date('Y-m-01', strtotime(date("Y-m-d")));
echo "本月的第一天為".date('Y-m-01',strtotime(date("Y-m-d")))."<br>"; //獲取本月第一天
echo date('Y-m-d',mktime(0,0,0,date('m'),1,date('Y'))).'<br>';
echo "本月的最後一天為".date('Y-m-d', strtotime("$BeginDate +1 month -1 day"))."<br>"; //獲取本月最後一天
echo date('Y-m-d',mktime(0,0,0,date('m')+1,0,date('Y')))."<br>";
echo "上一個月的第一天".date('Y-m-01', strtotime('-1 month'))."<br>"; //獲取上一個月的的第一天
echo date('Y-m-d',mktime(0,0,0,date('m')-1,1,date('Y'))).'<br>';
echo "上一個月的最後一天".date('Y-m-t', strtotime('-1 month'))."<br>"; //獲取上一個月的最後一天
echo date('Y-m-d',mktime(0,0,0,date('m'),0,date('Y')))."<br>";
// echo date('Y-m-d', strtotime("17-05-1"))."<br>";
// echo date('Y-m-d', strtotime("{$year}-{$month}-1"))."<br>";
// echo strtotime("{$year}-{$month}-1 +1 month -1 day")."<br>";
// echo date('Y-m-d',strtotime("{$year}-{$month}-1 +1 month -1 day"))."<br>";
?>