簡體   English   中英

將時間轉換為字符串時秒丟失

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM