php中根據(jù)某年第幾天計(jì)算出日期年月日的代碼
更新時(shí)間:2011年02月24日 23:52:31 作者:
在PHP中,使用內(nèi)置的date()函數(shù)很容易得到任意一天是當(dāng)前年的第幾天,格式為date('z'),為此,很多PHP程序會(huì)用一年中的第幾天作為數(shù)據(jù)庫的索引(index)。
這個(gè)索引值除了方便面數(shù)據(jù)的記錄和搜索,還起著記錄日期資訊的作用,信息量很可觀。
那么,如何還原索引值為可用的日期資訊呢?
date('z')返回的是一年中的第幾天,返回值為從0開始至365的整數(shù)。要將這些整數(shù)還原為日期信息,我們只需要一個(gè)簡(jiǎn)單的計(jì)算。以今年(2008年)第159天(實(shí)際為160天,php中從0開始,0對(duì)應(yīng)于常規(guī)的第一天)為例,計(jì)算它的日期、星期方法如下:
<?php
$MyDate=159; //第159天
$milliseconds = mktime(0,0,0,1,1,2008) + $MyDate * 86400; //取得UNIX時(shí)間戳記
$msg = date('F jS Y , l',$milliseconds); //格式化日期輸出
echo $msg;
?>
運(yùn)行以上程序,瀏覽器上顯示的信息將是:June 8th 2008 , Sunday
解釋:
一. $milliseconds是UNIX時(shí)間戳記變量,它表明2008年第159天所經(jīng)歷的從UNIX公元紀(jì)(1700年1月1日)以來的毫秒數(shù),它將作為 參數(shù)用于date()函數(shù)中參與計(jì)算日期信息,是個(gè)重要的依據(jù)。要正確計(jì)算$milliseconds的值,我們首先需要得到2008年1日1日所經(jīng)歷的 毫秒數(shù),即,mktime(0,0,0,1,1,2008),然后加上159天的毫秒數(shù),即,$MyDate * 86400,因?yàn)?,每一天?6400毫秒。
二. $msg是我們格式化輸出的日期資訊,此變量值的取得通過date()函數(shù),第一個(gè)參數(shù)“'F jS Y , l'”只是格式化格式,還可以根據(jù)需要設(shè)置為別的,第二個(gè)參數(shù)是毫秒數(shù)(長(zhǎng)整型),其意義為從UNIX起始年到某個(gè)特定時(shí)刻所經(jīng)歷的毫秒總數(shù)。
為了驗(yàn)證程序的正確性,我們可以打印一下2008年6月8日所經(jīng)歷的毫秒數(shù):mktime(0,0,0,6,8,2008),它的值將與$milliseconds是一樣的:1212854400。
那么,如何還原索引值為可用的日期資訊呢?
date('z')返回的是一年中的第幾天,返回值為從0開始至365的整數(shù)。要將這些整數(shù)還原為日期信息,我們只需要一個(gè)簡(jiǎn)單的計(jì)算。以今年(2008年)第159天(實(shí)際為160天,php中從0開始,0對(duì)應(yīng)于常規(guī)的第一天)為例,計(jì)算它的日期、星期方法如下:
復(fù)制代碼 代碼如下:
<?php
$MyDate=159; //第159天
$milliseconds = mktime(0,0,0,1,1,2008) + $MyDate * 86400; //取得UNIX時(shí)間戳記
$msg = date('F jS Y , l',$milliseconds); //格式化日期輸出
echo $msg;
?>
運(yùn)行以上程序,瀏覽器上顯示的信息將是:June 8th 2008 , Sunday
解釋:
一. $milliseconds是UNIX時(shí)間戳記變量,它表明2008年第159天所經(jīng)歷的從UNIX公元紀(jì)(1700年1月1日)以來的毫秒數(shù),它將作為 參數(shù)用于date()函數(shù)中參與計(jì)算日期信息,是個(gè)重要的依據(jù)。要正確計(jì)算$milliseconds的值,我們首先需要得到2008年1日1日所經(jīng)歷的 毫秒數(shù),即,mktime(0,0,0,1,1,2008),然后加上159天的毫秒數(shù),即,$MyDate * 86400,因?yàn)?,每一天?6400毫秒。
二. $msg是我們格式化輸出的日期資訊,此變量值的取得通過date()函數(shù),第一個(gè)參數(shù)“'F jS Y , l'”只是格式化格式,還可以根據(jù)需要設(shè)置為別的,第二個(gè)參數(shù)是毫秒數(shù)(長(zhǎng)整型),其意義為從UNIX起始年到某個(gè)特定時(shí)刻所經(jīng)歷的毫秒總數(shù)。
為了驗(yàn)證程序的正確性,我們可以打印一下2008年6月8日所經(jīng)歷的毫秒數(shù):mktime(0,0,0,6,8,2008),它的值將與$milliseconds是一樣的:1212854400。
您可能感興趣的文章:
- php根據(jù)生日計(jì)算年齡的方法
- php計(jì)算兩個(gè)日期時(shí)間差(返回年、月、日)
- php根據(jù)身份證號(hào)碼計(jì)算年齡的實(shí)例代碼
- PHP計(jì)算一年多少個(gè)星期和每周的開始和結(jié)束日期
- PHP 年齡計(jì)算函數(shù)(精確到天)
- 探討:如何使用PHP實(shí)現(xiàn)計(jì)算兩個(gè)日期間隔的年、月、周、日數(shù)
- php簡(jiǎn)單計(jì)算年齡的方法(周歲與虛歲)
- php計(jì)算年齡精準(zhǔn)到年月日
- PHP計(jì)算近1年的所有月份
- php判斷/計(jì)算閏年的方法小結(jié)【三種方法】
相關(guān)文章
PHP實(shí)現(xiàn)普通和定時(shí)跳轉(zhuǎn)的幾種方式
這篇文章主要為大家詳細(xì)介紹了PHP實(shí)現(xiàn)普通和定時(shí)跳轉(zhuǎn)的幾種方式,文章通過代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的小伙伴可以參考下2023-11-11
PHP使用PDO訪問oracle數(shù)據(jù)庫的步驟詳解
POD擴(kuò)展是在PHP5中加入,該擴(kuò)展提供PHP內(nèi)置類 PDO來對(duì)數(shù)據(jù)庫進(jìn)行訪問,不同數(shù)據(jù)庫使用相同的方法名,解決數(shù)據(jù)庫連接不統(tǒng)一的問題。下面這篇文章主要給大家介紹了關(guān)于PHP使用PDO訪問oracle數(shù)據(jù)庫的步驟,需要的朋友可以參考下。2017-09-09
php中郵箱地址正則表達(dá)式實(shí)現(xiàn)與詳解
本文章不但要講述了關(guān)于正則達(dá)式而且還講述了關(guān)于郵箱正則的構(gòu)成用法詳解,有需要了解的朋友可以參考一下,同時(shí)我們也提供了多種不同的郵箱驗(yàn)證實(shí)例2012-04-04
PHP+MySQL實(shí)現(xiàn)輸入頁碼跳轉(zhuǎn)到指定頁面功能示例
這篇文章主要介紹了PHP+MySQL實(shí)現(xiàn)輸入頁碼跳轉(zhuǎn)到指定頁面功能,結(jié)合實(shí)例形式分析了php連接mysql數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢及分頁顯示、指定頁數(shù)跳轉(zhuǎn)顯示等相關(guān)操作技巧,需要的朋友可以參考下2018-06-06
php基于登陸時(shí)間判斷實(shí)現(xiàn)一天多次登錄只積分一次功能示例
這篇文章主要介紹了php基于登陸時(shí)間判斷實(shí)現(xiàn)一天多次登錄只積分一次功能,適合會(huì)員系統(tǒng)的積分功能,涉及php時(shí)間判斷與數(shù)據(jù)庫相關(guān)操作技巧,需要的朋友可以參考下2017-10-10
PHP Global變量定義當(dāng)前頁面的全局變量實(shí)現(xiàn)探討
我們?cè)谶@篇文章中就針對(duì)PHP Global變量出現(xiàn)的問題給出了一些具體的解決辦法,感興趣的朋友可以參考下哈2013-06-06
PHP XML Expat解析器知識(shí)點(diǎn)總結(jié)
在本文里我們給大家整理了關(guān)于PHP XML Expat解析器的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們學(xué)習(xí)下這個(gè)吧。2019-02-02
php中轉(zhuǎn)義mysql語句的實(shí)現(xiàn)代碼
如果你需要向數(shù)據(jù)庫,插入形如’你好’,這樣包含有單引號(hào)或者雙引號(hào)的字符串怎么辦,當(dāng)然可以使用反斜杠進(jìn)行轉(zhuǎn)義,但是如果內(nèi)容太多呢?2011-06-06

