PHP轉換Excel中日期和時間類型的處理問題
更新時間:2023年10月24日 09:20:15 作者:YBaog
在實際應用中PHP讀取的Excel文件的日期無法直接使用,會出現的一系列問題,本文給大家介紹PHP轉換Excel中日期和時間類型的處理問題,感興趣的朋友一起看看吧
在實際應用中PHP讀取的Excel文件的日期無法直接使用,會出現的一系列問題。
在Excel中的日期存儲的是數值類型,是從 1900年1月1日 到現在的數值,以天為單位來計算的。
可以在Excel中驗證,首先在一個單元格中輸入 2023-1-1 ,然后將單元格格式修改為 常規(guī),然后就會看到單元格內容變成了 44927。
Excel中的時間是一個從0到0.99999999之間的小數值,表示從00:00:00(12:00:00 AM)到23:59:59(11:59:59 PM)之間的時間。例如12:00 PM的數值是0.5,表示一天的一半。
| 正常日期 | Excel存儲 |
|---|---|
| 2023-1-1 | 44927 |
| 2023-1-1 23:59:59 | 44927.9999884259 |
通過PHPExcel的官方文檔了解到,我們可以得到一個新的的計算公式:
Excel日期與PHP時間戳之間存在一個時間偏移量,因為Excel的日期起點是1900年1月1日,在UNIX時間戳中相當于從1970年1月1日起前推的25569天。
/* * $excel_date Excel表格的數字 * 25569 (常數)日期的偏移量 * 86400 (60*60*24) * 28800 (60*60*8)時差 */ $timestamp = ($excel_date - 25569) * 86400 - 28800;
通過上述公式,獲取Excel日期
function get_excel_timestamp($excel_date)
{
$pattern = '/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/'; //日期格式正則
if (empty($excel_date)) {
return time();
} elseif (is_numeric($excel_date)) {
return ($excel_date - 25569) * 86400 - 28800;
} elseif (preg_match($pattern, $excel_date)) {
return strtotime($excel_date);
} else {
return time();
}
}到此這篇關于PHP轉換Excel中日期和時間類型的處理的文章就介紹到這了,更多相關PHP轉換Excel日期和時間內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:
相關文章
ThinkPHP提示錯誤Fatal error: Allowed memory size的解決方法
這篇文章主要介紹了ThinkPHP提示錯誤Fatal error: Allowed memory size的解決方法,分析了該錯誤的原因與具體的解決方法,具有一定參考借鑒價值,需要的朋友可以參考下2015-02-02

