javascript/jQuery date.toString(“yyyy-MM-dd HH:MM:ss”)在服务器之间

javascript/jQuery date.toString("yyyy-MM-dd HH:mm:ss") inconsistent between servers - same browser

本文关键字:ss MM 之间 服务器 HH date jQuery toString yyyy-MM-dd javascript      更新时间:2024-05-08

我刚刚从生产机器上推送了我的web应用程序(RedHat v5)。将它克隆到我的开发机器(Max OSX 10.10)和我即将推出的新服务器(Redhat v7)上。我在一行javascript中遇到了一个错误。

问题中的javascript语句是:

$('#actual_end_date_time').val(date.toString("yyyy-MM-dd HH:mm:ss"));

显示版本和格式化日期字符串的警报代码:

alert("jqVersion:"+$.fn.jquery+" formatted date:"+date.toString("yyyy-MM-dd HH:mm:ss"));

关于开发和生产机器。字符串为:

jqVersion:1.3.2 formatted date:2015-02-24 12:29:00

在即将生产的机器上,这个字符串是:

jqVersion:1.3.2 formatted date:Tue Feb 24 2015 12:33:55 GMT-0800 (PST)

就好像没有应用任何格式一样。代码库是相同的,使用的jQuery版本是v1.3.2(我尝试过jQuery v2.1.3,但该版本的应用程序中有更多的代码失败)。在所有情况下,网络浏览器都是一样的:Safari v8.0.3,网络浏览器的操作系统是Mac OS X 10.10.2。在代码的后面,数据通过以下方式进行评估:

Date.parseExact($('#actual_end_date_time').val(),"yyyy-MM-dd HH:mm:ss")'

给出控制台错误:

[Error] TypeError: undefined is not a function (evaluating 'Date.parseExact($('#actual_end_date_time').val(),"yyyy-MM-dd HH:mm:ss")')
caldisp_out_2 (index.php, line 769)
onSelect (calendar-setup.js, line 116)
callHandler (calendar.js, line 1281)
cellClick (calendar.js, line 709)
tableMouseUp (calendar.js, line 354)

然后失败(不存储日期对象,并且可以由用户输入字符串)。

唯一的区别是新的生产机器。我的印象是javascript在客户端上运行,并不关心服务器在运行什么。

关于如何解决这个问题,有什么想法吗?

您是否考虑过使用moment.js等库为您进行格式化?可能是获得一致外观的方法。http://momentjs.com/

我的解决方案是让页面在需要日期格式之前再次运行脚本源date.js。该脚本现在包含在页面中两次。我不知道为什么只在这台虚拟机服务器上需要这个。。。这在问题上使用了创可贴(r),但并没有解决问题。