【问题标题】:Jquery date string not functional in Safari/Firefox, okay in ChromeJquery 日期字符串在 Safari/Firefox 中不起作用,在 Chrome 中可以
【发布时间】:2013-04-30 15:19:26
【问题描述】:

我似乎无法弄清楚为什么在 Mac 上使用 Safari 6.0.4 或 Firefox 20 时以下内容不显示跨度内的日期(尚未测试 Windows)。

HTML:

<h1>Some Text <span id="dt"></span></h1>

jQuery:

jQuery(document).ready(function() {

var d = new Date();
var month = d.getMonth()+1;
var day = d.getDate();
var TodaysDate = month + '/' + day + '/' +  d.getFullYear() + '-';
var tDate = new Date(TodaysDate).toUTCString();
var dt = tDate.slice(0, - 12);
//The Date string
$('#dt').text(dt);

});

我尝试将$('#dt').text(dt); 替换为$('#dt').html(dt);,但没有任何变化。

这会用日期填充#dt 范围。它在 Chrome 中运行良好,但在 Firefox 和 Safari 中不显示任何内容。

jsFiddle here

任何见解都将不胜感激。

【问题讨论】:

  • “不起作用”从不足以说明问题。为什么不使用接受单独年、月和日参数的Date 构造函数?
  • 够了。对不起,我应该解释说日期没有出现。至于不使用不同的日期构造函数......我没有那么受过教育并且正在尽我所能。
  • 您可以通过阅读一些文档轻松自学:)developer.mozilla.org/en-US/docs/JavaScript/Reference/…
  • 我知道有文档。希望有时间来回顾、理解并能够完全按照我的意愿实施。但时间不允许。我需要一个快速的解决方案,以后再完善。我传统上使用 PHP 日期函数,这是我第一次需要在没有 jQuery datepicker 的情况下使用 javascript 日期。感谢您链接到明显而不是实际协助;)

标签: jquery firefox safari


【解决方案1】:

已经回答了,但是如果您愿意使用小型辅助库,我真的很喜欢这个: http://momentjs.com/

这是一个非常好的包装器。要获取当前日期/时间,只需执行以下操作:

var now = moment();

要将其格式化为 UTC 字符串,只需执行以下操作:

now.utc().format(<your params>)

【讨论】:

  • 谢谢。绝对会寻找未来的使用。但是这个特定的页面是一个页面,我不想用太多的库来加载它。传统上我会使用 PHP 日期函数,但我试图坚持使用客户端,这就是这个问题出现的地方。
【解决方案2】:

去掉- in:

var TodaysDate = month + '/' + day + '/' +  d.getFullYear() + '-';

这会生成 5/6/2013-,显然只有 Chrome 才能容忍。

改成:

var TodaysDate = month + '/' + day + '/' + d.getFullYear();

jsFiddle example

【讨论】:

  • 请解释为什么这会破坏它。
  • 我想一些new Date() 实现比其他的更宽容。
  • 在他解释自己之前不要检查他:)
  • @Pinch - a) 我不记得有人选举你作为 SO 看门人。 OP 可以随心所欲,b) 我的解释是 Chrome 比其他浏览器更能容忍格式错误的日期字符串。
  • 哇...错过了那头大象。
猜你喜欢
  • 1970-01-01
  • 2012-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多