解析时间字符串失败.:双时区规格


Failed to parse time string ... : Double timezone specification

我有一个返回日期/时间值的表单。这是相关位的代码(它是Knockout JS中的javascript代码,该网站使用以及使用Symfony进行验证的Propel,以及用于日期格式的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'

不幸的是,当提交表单时,它返回这个错误:

致命错误:未捕获的异常' exception '与消息'DateTime::__construct(): Failed to parse time string (startdate) at position 0 (s):时区无法在数据库中找到'在C:'wamp'www'iq'vendor'symfony'validator'Constraints'AbstractComparisonValidator.php第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)'

但是得到这个错误:

致命错误:未捕获的异常'异常'与消息'DateTime::__construct():未能解析时间字符串(星期四8月20日2015 14:00:00 GMT+0100 (GMT夏令时))在位置39 (D):双时区规格'在C:'wamp'www'iq'vendor'propel'propel'src' propel' Runtime'Util'PropelDateTime.php在第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)

哪个看起来是正确的?

找出问题所在。基本上在Propel模式上有一个验证行为:

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

传递的是字符串"开始日期"而不是实际值。