当前位置: 首页 > 知识库问答 >
问题:

无法分析时间字符串…:双时区规范

牟恺
2023-03-14

我有一个返回日期/时间值的表单。这是相关位的代码(这是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'

不幸的是,提交表单时,会返回以下错误:

致命错误:未捕获的异常'异常'与消息'DateTime::__construct():未能解析时间字符串(开始日期)在位置0(s):在数据库中找不到时区'在C:\wamp\www\iq\供应商\symfony\validator\Constraint\AbstractCompisonV<-PLHD--1/>在第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)'

但是得到这个错误:

致命错误:未捕获异常“exception”,消息为“DateTime::\uuu construct():无法分析C:\wamp\www\iq\vendor\spreep\src\spreep\Runtime\Util\PropelDateTime中位置39(D):双时区规范”处的时间字符串(2015年8月20日星期四14:00:00 GMT 0100(GMT夏令时))。php在线96

所有包都是最新的。

有人知道如何解决这个问题吗?

提前谢谢你。

编辑:我试图使用硬编码日期:

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

但这没用。以下是表单创建失败后print\r返回的内容:

DateTime对象([日期]=

哪个似乎正确?所以我真的不知道为什么我会出错。

共有1个答案

葛磊
2023-03-14

找出问题所在。基本上,推进模式上存在验证行为:

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

它传递的是字符串“StartDate”,而不是实际值。删除它修复了这个问题。

 类似资料:
  • 我已经研究过关于同一错误的其他问题,但我很难将它们应用到我的情况中。 这是我得到的错误: 致命错误:未捕获异常“exception”,消息为“DateTime::u-construct()[DateTime.-construct]:无法分析位置10(1)处的时间字符串(2013-07-22164:50:00):在/Applications/XAMPP/xamppfiles/htdocs/Festi

  • 我需要从表单接收的值创建一个DateTime。问题是这个值像一个字符串一样被接收:“2016-10-10T08:29:06.959Z”,我需要接收像没有引号,因为如果我用引号接收,我就有下一个错误: DateTime::__construct():无法解析位置0()的时间字符串("2016-10-14T22:00:00.000Z"):意外字符 当我尝试将值转换为DateTime时,使用: 如果我尝

  • 我正试图以小时为单位显示自这样一个日期以来的数字。。。 这是给我的错误信息。。。 有人知道我哪里出错了吗?

  • 我有一个本地日期时间的字符串表示和一个Java时区。 我正在尝试以 MM/dd/yyyy HH:mm:ssZ 格式获取输出,但我无法弄清楚如何使用正确的日期时间和时区创建日历或 JodaTime 对象。如何将时区转换为可以通过简单日期格式“Z”或“z”解析的值? 和 返回 这是 。 是创建日历或Joda日期时间并通过解析字符串“08/14/2014 15:00:00”来设置各个年/月/日/小时/分

  • 我正在使用下面的函数计算从出生日期(欧洲格式DD/MM/YYYY)算起的人的年龄(以年为单位),这些日期作为文本存储在Wordpress高级自定义字段中 在大多数情况下,它工作正常,但在某些情况下,我得到以下错误: 工作正常的数据示例:$age=get_age($birthday); 对于$birth value=05/04/1946,它可以正常工作,但是对于$birth value=26/01/

  • 我在尝试使用时间戳创建新的DateTime对象时出现了此构造错误: 异常:DateTime::construct():未能分析位置8(8)处的时间字符串(1372622987):DateTime中出现意外字符- 对象创建代码为: 其中$dbResult- 1372622987 对于传递的无效格式,我可以理解这个错误,但这是一个真正的时间戳。 原因很奇怪:我运行了一个脚本来创建一个新的DateTim