0
我有日期是否是一個有效的日期(如1/1/2017
)這個
new DateTime(date($format = "Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($val))).
一切工作正常,但如果我把一個日期如'30/2/2000'
在Excel中,從上面的函數返回'1900-01-30 00:00:00.000000'.
有沒有辦法告訴該功能不轉換,如果它不是有效的日期?
對於離,new DateTime
返回FALSE
如果該值不是有效的日期,但ExcelToPHP
總是返回a date
,我不需要這個。
===編輯===
顯然,如果Excel單元格的格式爲日期,我收到PHP中的值是一個數字:從01-01-1900
經過的天數。對於無效的日期,它將以字符串形式返回值,而不是數字。
我覺得2個東西可以在這裏工作:
- 檢查,如果它是一個數字或字符串
- 轉換成可讀的PHP格式和驗證結果
我選擇第二種one:
$stringDate = \PHPExcel_Style_NumberFormat::toFormattedString($val, 'DD-MM-YYYY');
if (strtotime($stringDate) === false) {
// throw error or do something if is not a valid date
}
在Excel中,我有1/1/1980,在PHP中我收到29221.所以即使我有一個有效日期,strtotime也是假的。 –
No @ taysia09 strtotime返回'1/1/1980'的時間戳。結果是:'315532800' –
我剛試過。 $ val = 29221,所以它會是strtotime(29221)==> false –