2015-08-20 66 views
0

我有一個表單返回日期/時間值。這是相關位的代碼(這是在淘汰賽JS,該網站利用以及行走的JavaScript代碼,它使用的Symfony進行驗證,除其他事項外,對於日期格式MomentJS):無法解析時間字符串...:雙重時區規範

self.startDate = ko.computed(function() { 
    var startDate = moment(self.timesheetDate() + " " + self.startTime()); 

    return startDate.format("YYYY-MM-DD HH:mm"); 
}, self); 

console.log(self.startDate()); // returns '2015-08-20 14:00' 

不幸的是,提交表單時,返回此錯誤:

Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string (startdate) at position 0 (s): The timezone could not be found in the database' in C:\wamp\www\iq\vendor\symfony\validator\Constraints\AbstractComparisonValidator.php on line 53

我試圖傳遞值作爲一個JavaScript Date對象,而不是:

self.startDate = ko.computed(function() { 
    var startDate = moment(self.timesheetDate() + " " + self.startTime()); 

    return new Date(startDate.format("YYYY-MM-DD HH:mm")); 
}, self); 

console.log(self.startDate()); // returns 'Thu Aug 20 2015 14:00:00 GMT+0100 (GMT Daylight Time)' 

但得到這個犯錯或者:

Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string (Thu Aug 20 2015 14:00:00 GMT+0100 (GMT Daylight Time)) at position 39 (D): Double timezone specification' in C:\wamp\www\iq\vendor\propel\propel\src\Propel\Runtime\Util\PropelDateTime.php on line 96

所有包都是最新的。

有沒有人有一個想法如何解決這個問題?

預先感謝您。

編輯:我試圖使用硬編碼日期:

$timesheet->setStartDate(date_format(date_create('2015-08-08 11:10:00'), 'Y-m-d H:i:s')); 

,但它並沒有幫助。這裏是print_r在表單失敗後返回的內容:

DateTime Object ([date] => 2015-08-08 11:10:00 [timezone_type] => 3 [timezone] => Europe/London)

這似乎是正確的?所以我真的不知道爲什麼我會得到這個錯誤。

+0

您的後端需要什麼格式?您是否嘗試過使用ISO 8601日期格式? 'startDate.format()'將以iso格式返回日期 –

+0

@AnishPatel它預計'Y-m-d H:i:s' – Pawel

+0

您正在使用缺少秒的'YYYY-MM-DD HH:mm'。第一個異常也表示預期有一個時區,在格式字符串中使用'Z'。嘗試'YYYY-MM-DD HH:mm:ssZ',或者嘗試使用ISO格式的第一個建議,我看不到標準日期時間庫不能識別ISO日期。 –

回答

0

找出問題出在哪裏。基本上有上行走模式的驗證行爲:

<behavior name="validate"> 
... 
<parameter name="rule3" value="{column: enddate, validator: GreaterThan, options: {value: StartDate, message: End date is required}}" /> 
</behavior> 

它通過字符串「起始日期」,而不是實際值。刪除它解決了問題。