[英]Conversion failed when converting date and/or time from character string when converting inputted time | SQL, SQLSRV
[英]Second being lost when converting time to string
我正在使用CakePHP 3和PHP 5.6。 我認為CakePHP可能在此問題中發揮了作用(即,將SQL DateTime條目轉換為它自己的DateTime格式。)
我有一個SQL表,其中包含一系列包含DateTime值的條目。 它們的輸入方式如下:
2016-07-29 17:46:45
我目前不在控制器中進行任何形式的解析,我只是通過$this->set()
將其傳遞給視圖
在視圖中,我可以使用CakePHP調試器查看日期顯示為包含時間值,fixedNowTime值和時區值的數組。 時間值顯示如下:
我可以看到第二個確實包含在時間中。 但是,當我嘗試回顯它時,無論我如何嘗試,第二個都是丟失的。
我嘗試過的
以下是我嘗試過的示例和輸出:
1。
$dateval = date_parse($adatevalue);
echo $dateval['second'];
-根本沒有輸出
2。
$dateval = strtotime($adatevalue);
echo date('Y-m-d H:i:s', $dateval);
輸出(通知秒丟失):
2016-07-29 17:46:00
3。
$dateval = date_parse($adatevalue['time']);
echo $dateval['second'];
輸出:
Cannot use object of type Cake\I18n\FrozenTime as array
嘗試在控制器中執行這些操作會產生相同的結果。
調試工具包的輸出有點欺騙性,因為它將僅顯示對象調試信息( __debugInfo()
),該信息始終是一個數組。 您的日期不是數組,它們實際上是日期/時間對象,正如您所顯示的錯誤所提示。
丟失秒的原因是您嘗試轉換日期/時間對象。 您配置的en_US
語言環境使用的日期格式模式不會輸出秒數( M/d/yy, h:mm a
),因此strtotime
將收到日期時間字符串,例如7/29/16, 5:46 PM
,從而導致秒丟失。
如果要更改默認輸出格式,請使用例如i18nFormat()
或format()
顯式格式化輸出,例如
$adatevalue->i18nFormat(\IntlDateFormatter::FULL)
$adatevalue->i18nFormat('yyyy-MM-dd HH:mm:ss')
$adatevalue->format('Y-m-d H:i:s')
或在引導程序日期/時間類型配置中設置/更改默認輸出格式,例如
\Cake\I18n\FrozenTime::setToStringFormat('yyyy-MM-dd HH:mm:ss');
也可以看看
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.