我有一個表單返回日期/時間值。這是相關位的代碼(這是在淘汰賽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)
這似乎是正確的?所以我真的不知道爲什麼我會得到這個錯誤。
您的後端需要什麼格式?您是否嘗試過使用ISO 8601日期格式? 'startDate.format()'將以iso格式返回日期 –
@AnishPatel它預計'Y-m-d H:i:s' – Pawel
您正在使用缺少秒的'YYYY-MM-DD HH:mm'。第一個異常也表示預期有一個時區,在格式字符串中使用'Z'。嘗試'YYYY-MM-DD HH:mm:ssZ',或者嘗試使用ISO格式的第一個建議,我看不到標準日期時間庫不能識別ISO日期。 –