A. 關於php 時間戳只能到 2037年的問題,這是不是php的bug,大家有解決方法嗎
mktime
(PHP 3, PHP 4, PHP 5)
mktime -- 取得一個日期的 Unix 時間戳
說明
int mktime ( [int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]] )
根據給出的參數返回 Unix 時間戳。時間戳是一個長整數,包含了從 Unix 紀元(January 1 1970 00:00:00 GMT)到給定時間的秒數
year
年份數,可以是兩位或四位數字,0-69 對應於 2000-2069,70-100 對應於 1970-2000。在如今系統中普遍把 time_t 作為一個 32 位有符號整數的情況下,year 的合法范圍是 1901 到 2038 之間,不過此控制自 PHP 5.1.0 起已被克服了。
如果在你本地上測試不能超過2037/38的話,那可能和硬體以及操作系統有關,我在UNIX伺服器上測試是沒有這個限制的,所以不必擔心這個問題。
-----------------------------------
關於2003系統,我沒環境做測試,所以不好說。但在我的伺服器(Linux Ubuntu)上測試是沒問題的。
B. php時間戳能表達的最大時間是什麼,該如何解決
有效的時間戳典型範圍是格林威治時間 1901 年 12 月 13 日 20:45:54 到 2038 年 1 月 19 日 03:14:07。(此范圍符合 32 位有符號整數的最小值和最大值)。不過在 PHP 5.1 之前此范圍在某些系統(如 Windows)中限制為從 1970 年 1 月 1 日到 2038 年 1 月 19 日。
C. 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語句裡面就可以查詢到數據了
D. java時間戳多少位
時間戳的位數是根據演算法計算的,沒有固定的位數。可信時間戳計算出來的電子文件的數字指紋是40位,由於精度不同,導致長度不一致,直接轉換錯誤。
JAVA時間戳長度是13位,如:1294890876859
PHP時間戳長度是10位,
如:1294890859
php
echo
date!
(4)php時間戳最大擴展閱讀:
JRE是個運行環境,JDK是個開發環境。因此寫Java程序的時候需要JDK,而運行Java程序的時候就需要JRE。而JDK裡面已經包含了JRE,因此只要安裝了JDK,就可以編輯Java程序,也可以正常運行Java程序。但由於JDK包含了許多與運行無關的內容,佔用的空間較大,因此運行普通的Java程序無須安裝JDK,而只需要安裝JRE即可。
E. php怎麼將指定期時間轉為時間戳(時間戳精確到毫秒)
php並沒有直接支持毫秒的日期時間函數,所以要想得到毫秒級的時間戳,就要把秒級的時間戳*1000。
需要注意的是,由於毫秒級的時間戳已經遠遠超過整數的大小范圍,所以要用浮點數(且精度不能低於13位)來儲存。
另外,要想把毫秒級的時間戳轉為時間,務必先/1000再轉換,否則錯誤,因為php並不認識所謂的毫秒級時間戳!
不過,雖然無法獲得指定時間的毫秒級時間戳,但要想獲得當前時間的毫秒數,卻是有辦法的:
echo microtime(true)*1000;
F. php時間戳
1232553600表示從1970 年 1 月 1 日0時 0分 0秒到你指定時間(2009-1-220:0:0)的秒數。
G. php的時間戳問題
mktime() 函數返回一個日期的 Unix 時間戳。 參數總是表示 GMT 日期,因此 is_dst 對結果沒有影響。 參數可以從右到左依次空著,空著的參數會被設為相應的當前 GMT 值。 參數描述 hour 可選。規定小時。 minute 可選。規定分鍾。 second 可選。規定秒。 month 可選。規定用數字表示的月。 day 可選。規定天。 year 可選。規定年。在某些系統上,合法值介於 1901 - 2038 之間。不過在 PHP 5 中已經不存在這個限制了。 is_dst 可選。如果時間在日光節約時間(DST)期間,則設置為1,否則設置為0,若未知,則設置為-1。自 5.1.0 起,is_dst 參數被廢棄。因此應該使用新的時區處理特性。 例子 mktime() 函數對於日期運算和驗證非常有用。它可以自動校正越界的輸入: <?php echo(date("M-d-Y",mktime(0,0,0,12,36,2001))); echo(date("M-d-Y",mktime(0,0,0,14,1,2001))); echo(date("M-d-Y",mktime(0,0,0,1,1,2001))); echo(date("M-d-Y",mktime(0,0,0,1,1,99))); ?> 輸出: Jan-05-2002 Feb-01-2002 Jan-01-2001 Jan-01-1999 time() 函數返回當前時間的 Unix 時間戳。 語法time(void) 參數描述 void 可選。 說明 返回自從 Unix 紀元(格林威治時間 1970 年 1 月 1 日 00:00:00)到當前時間的秒數。
H. PHP時間戳判斷大小問題
造成這個原因的最大可能是你直接 date()取出來的是 UTC時間,不是北京時間(UTC+8)
解決辦法是在你代碼的源碼頂部插入一行。
date_default_timezone_set("PRC");
詳見我的日誌
http://snmoney.blog.163.com/blog/static/44005820130282382206/
如果時間還是不準,還有一個可能是 伺服器本身的時鍾不準,你可以通過 date('H:i:s') 直接輸出來判斷。
另外..第一行為何要輸出成 文本再轉換回timestamp呢?感覺效率降低,可以直接替換成 time();
I. 怎麼克服php中處理時間戳只能限制在1901到2038之間的問題
這屬於計算機問題,可以參考關鍵詞 千年蟲。
在32位系統中時間只能到2038
解決辦法:64位運算器可以記錄至約2900億年後的292,277,026,596年12月4日15:30:08,星期日(UTC)。
因為調整成本及程序設計現在還沒有得到普及。
J. php時間格式轉換
標准時間與時間戳轉換如下:
<?php
$nowtime=date("Y-m-dH:i:s");
//標准時間轉為時間戳
$dateline=strtotime($nowtime);
//時間戳轉為標准時間
$nowtime=date('H:i:s',$dateline);
?>
PHP時間戳函數獲取英文文本日期時間:
當前時間:echo date(」Y-m-d H:i:s」,time()) 結果:2015-01-22 09:40:25
指定時間:echo date(」Y-m-d H:i:s」,strtotime(」+1 day」)) 結果:2015-01-23 09:40:25
需要注意的問題:
<一>、PHP時間大的來分有兩種,一是時間戳類型(1228348800),二是正常日期格式(2015-12-5)
<二>、php5.1以上時間戳會與實際時間相差8小時,解決辦法如下
1、最簡單的方法就是不要用php5.1以上的版本--顯然這是不可取的方法!!!
2、修改php.ini。打開php.ini查找date.timezone 去掉前面的分號= 後面加Asia/Shanghai,重啟apache伺服器即可--缺點就是如果程序
放到別人的伺服器上,不能修改php.ini,那就奈何不得了。
3、在程序中添加時間的初始化的語句即:「date_default_timezone_set("Asia/Shanghai"); 」
這樣就可以實現輸出的是北京時間了!