【问题标题】:Javascript Date.parse returning NaN in blackberry browserJavascript Date.parse 在黑莓浏览器中返回 NaN
【发布时间】:2011-10-25 09:08:32
【问题描述】:

这是我试图在黑莓模拟器浏览器(OS V6.0)中运行的代码。

<html>
<body>

<script type="text/javascript">
var d = Date.parse("Tue Oct 25 2011 18:33:17 GMT+0230");
var d1 = Date.parse("Tue Oct 25 2011 18:33:17");
document.write(d+"::::::"+d1);

</script>

</body>
</html>

只要我传递给parse方法的字符串中有GMT信息,它就会返回NaN,而如果GMT信息不存在,它会返回一个值。但我无法从我的字符串。

知道为什么会失败吗?请注意,它只发生在黑莓中。

提前致谢。

【问题讨论】:

  • 为什么不能删除 GMT 部分?
  • 我需要该信息用于我使用解析日期执行的后续操作。我从服务器端获取此字符串。如果跳过 GMT 部分,则用户的本地时区将是解析时拍摄
  • 是的,但我要说的是:为什么不能去掉这个GMT信息,然后解析日期,最后加上GMT部分?如果这是一个黑莓错误,您可能无法做任何其他事情。您也可以尝试使用 datejs 库,但我相信它使用系统日期。
  • 好收获..感谢您的指点..如果您可以将其作为答案发布,我将接受它作为记录:) :)

标签: javascript html blackberry blackberry-simulator


【解决方案1】:

如 cmets 中所说,您可以删除 GMT 部分:

var gmt = str.indexOf("GMT");
var newDate = str.substr(0,gmt-1)

然后解析数据:

var d = Date.parse(newDate);

最后,添加 GTM 部分:

var offset_hour = str.substr(gmt+3, 3);
var offset_min = str.substr(gmt+6);
d.addMinutes(60 * offset_hour + offset_min);

代码未经测试,最后调用对应datejs库。

【讨论】:

    【解决方案2】:

    我必须创建自己的日期字符串,BlackBerry 乐于解析。我没有添加 GMT。

    // manually create date string because of BlackBerry parse method
    var dateStr=dateObj.getDay()+' '+dateObj.getDate()+' 'dateObj.getMonth()+' '+dateObj.getFullYear()+' '+dateObj.getHours()+':'+dateObj.getMinutes()+':'+'00';
    var mydate = Date.parse(dateStr); // works
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-30
      • 2020-07-27
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多