在我的OS X 10.7.3(Lion)笔记本电脑上,我无法使用Date构造函数解析Qt WebKit的JavaScript日期字符串。使用jasmine-headless-webkit或phantomJS,所有调用如:
new Date("2012-04-10")
始终返回
"Invalid Date"
而不是有效的Date对象。几个星期前,一切都工作正常,我已经在六台计算机上检查了这个设置类似的设置,无法在其他任何地方重现这个问题。
当我决定清除我原本未使用过的MacPorts安装时,我相当肯定问题已经开始了(我很久以前就已经切换到Homebrew并正在做一些清洁工作)。我怀疑有一个动态链接库已从我的系统中删除,Qt使用它来进行日期解析。
有谁知道这个日期解析库可能被调用了什么?任何想法,如果我可以用Homebrew安装它或以某种方式手动修复缺少的依赖?
我尝试重新安装Qt和许多其他库,但没有解决问题。
答案 0 :(得分:2)
我没有Mac,但考虑到Windows的类似情况,我会使用一个程序来报告有关应用程序依赖性的信息,如Dependency Walker。快速搜索建议this program可能有助于Mac世界。
答案 1 :(得分:1)
好的,我用jasmine-headless-webkit解决了日期解析的问题。不幸的是,我对它不够科学,所以我不确定修复它的原因。可能是以下部分或全部过程:
另外我安装了Qt SDK和XCode 4.3,但我认为这不会修复它,因为我的同事没有安装这些东西而且没有和我一样的问题。
这可能与MacPorts无关,但可能与我的旧版Qt 4.7安装有关。我现在正在运行Qt 4.8。
抱歉所有的噪音!也许这些信息可以帮助其他人。
答案 2 :(得分:0)
根据问题187“PhantomJS似乎打破了ISO8601日期格式的一个”,看起来这个错误将在v1.8中得到修复“:
http://code.google.com/p/phantomjs/issues/detail?id=187
与此同时,该错误报告的解决方法是将“T00:00:00Z”附加到您的日期。
答案 3 :(得分:0)
我有这个错误,我认为与QtWebKit有关,但在使用wicked_pdf时。很难在OS上运行wkhtmltopdf和qtwebkit的依赖(我在开发中运行OSX,有时在开发中使用Ubuntu,我们部署到Heroku但很快就可以部署到其他平台),所以我也尝试使用了解决方法。我使用moment.js来创建一个Date对象,一切正常。我没有时间去看看引擎盖,看看它是如何工作的,但我的猜测就是那个时刻。我很聪明地转向" YYYY-MM-DD"通过测试浏览器支持来进入日期对象。
这实际上是一个非常好的解决方法,当你不想关心你的代码运行的操作系统并且能够包含moment.js lib时。这样您就不必关心正在运行的WebKit。