PHP date, strtotime, mktime处理
今天經過幾個工作日(周一~周五)后為哪天。
2016-09-08經過5個工作日為2016-09-14
$currentDate=date('Y-m-d', strtotime("-1 days")); //當前日期
$workerWeeks = floor($workerDays / 5);
$endDate = date('Y-m-d',strtotime("$currentDate + " . $workerWeeks * 7 . "days"));
$days = $workerDays - $workerWeeks * 5;
for ($i=0; $i < $days; $i++) {
$endDate = date('Y-m-d',strtotime("$endDate +1 days"));
if (date('w',strtotime($endDate)) == 6) {
$endDate = date('Y-m-d',strtotime("$weekEndDate +2 days"));
}
if (date('w',strtotime($endDate)) == 0) {
$endDate = date('Y-m-d',strtotime("$weekEndDate +1 days"));
}
}
return $endDate;
?
date('Y-m-d', $time());
date('Y-m-d', '1453996800');
date('Y-m-d H:i:s', ?'1453996800');
date('H:i', ?'1453996800');
date('w', ?'1453996800');?星期中的第幾天,數字表示 0(星期天)到 6(星期六) , ?對應moment('1453996800000').format('d')
date() 函數格式化一個本地時間/日期。
date(format,timestamp)format 必需。規定如何返回結果。timestamp 可選。
d月份中的第幾天,有前導零的 2 位數字 01 到 31?
D 星期中的第幾天,文本表示,3 個字母 Mon 到 Sun?
j 月份中的第幾天,沒有前導零 1 到 31?
l (“L”的小寫字母) 星期幾,完整的文本格式 Sunday 到 Saturday?
N ISO-8601 格式數字表示的星期中的第幾天(PHP 5.1.0 新加) 1(星期一)到 7(星期天)?
S 每月天數后面的英文后綴,2 個字符 st,nd,rd 或者 th。可以和 j 一起用?
w 星期中的第幾天,數字表示 0(星期天)到 6(星期六)?
z 年份中的第幾天 0 到 366?
W ISO-8601 格式年份中的第幾周,每周從星期一開始(PHP 4.1.0 新加的) 42(當年的第 42 周)?
F 月份,完整的文本格式,例如 January 或者 March January 到 December?
m 數字表示的月份,有前導零 01 到 12?
M 三個字母縮寫表示的月份 Jan 到 Dec?
n 數字表示的月份,沒有前導零 1 到 12?
t 給定月份所應有的天數 28 到 31?
L 是否為閏年 如果是閏年為 1,否則為 0?
o ISO-8601 格式年份數字。
Y 4 位數字完整表示的年份 例如:1999 或 2003?
y 2 位數字表示的年份 例如:99 或 03?
a 小寫的上午和下午值 am 或 pm?
A 大寫的上午和下午值 AM 或 PM?
B Swatch Internet 標準時 000 到 999?
g 小時,12 小時格式,沒有前導零 1 到 12?
G 小時,24 小時格式,沒有前導零 0 到 23?
h 小時,12 小時格式,有前導零 01 到 12?
H 小時,24 小時格式,有前導零 00 到 23?
i 有前導零的分鐘數 00 到 59>?
s 秒數,有前導零 00 到 59>?
e 時區標識(PHP 5.1.0 新加) 例如:UTC,GMT,Atlantic/Azores?
I 是否為夏令時 如果是夏令時為 1,否則為 0?
O 與格林威治時間相差的小時數 例如:+0200?
P 與格林威治時間(GMT)的差別,小時和分鐘之間有冒號分隔 例如:+02:00?
T 本機所在的時區?
Z 時差偏移量的秒數。UTC 西邊的時區偏移量總是負的,UTC 東邊是正的。 -43200 到 43200?
c ISO 8601 格式的日期(PHP 5 新加) 2004-02-12T15:19:21+00:00?
r RFC 822 格式的日期 例如:Thu, 21 Dec 2000 16:01:07 +0200?
U 從 Unix 紀元(January 1 1970 00:00:00 GMT)開始至今的秒數 time()獲得時間戳
?
date('Y-m-d', strtotime('2015-01-15'));
date('Y-m-d', strtotime('+1 day', strtotime(''2015-01-15'')));
date('Y-m-d', strtotime('-1 day', strtotime('+1 month', strtotime(date('Y-m-01', (int)$endTime)))));
date('Y-m-d', strtotime('-1 day', strtotime('+1 year', strtotime(date('Y-01-01', (int)$endTime)))))
strtotime() 將任何英文文本的日期或時間描述解析為 Unix 時間戳。
strtotime(time,now);time 規定要解析的時間字符串。now 用來計算返回值的時間戳。如果省略該參數,則使用當前時間。
該函數預期接受一個包含美國英語日期格式的字符串并嘗試將其解析為 Unix 時間戳(自 January 1 1970 00:00:00 GMT 起的秒數),其值相對于 now 參數給出的時間,如果沒有提供此參數,則用系統當前時間。
date("M-d-Y",mktime(0,0,0,12,36,2001))? =>?Jan-05-2002
mktime() 函數返回一個日期的 Unix 時間戳。
mktime(hour,minute,second,month,day,year,is_dst)
hour 可選。規定小時。
minute 可選。規定分鐘。
second 可選。規定秒。
month 可選。規定用數字表示的月。
day 可選。規定天。
year 可選。規定年。在某些系統上,合法值介于 1901 - 2038 之間。不過在 PHP 5 中已經不存在這個限制了。
is_dst可選。如果時間在日光節約時間(DST)期間,則設置為1,否則設置為0,若未知,則設置為-1。自 5.1.0 起,is_dst 參數被廢棄。因此應該使用新的時區處理特性。
參數總是表示 GMT 日期,因此 is_dst 對結果沒有影響。
參數可以從右到左依次空著,空著的參數會被設為相應的當前 GMT 值。
轉載于:https://www.cnblogs.com/floraCnblogs/p/date-strtotime.html
總結
以上是生活随笔為你收集整理的PHP date, strtotime, mktime处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 16位模式/32位模式下PUSH指令探究
- 下一篇: PHP文件操作常用函数总结