片刻日期在Chrome中无法正常使用

时间:2016-07-12 14:26:47

标签: javascript jquery momentjs

我允许用户在日期字段中手动添加日期。 如果用户输入日期为1/1/13,我期待结果为01/01/2013。 这就是我正在使用的。 代码:

moment("1/1/13").format('MM/DD/YYYY')

在Chrome中工作正常,但在FF和IE中没有工作,它显示的是01/01/1913而不是01/01/2013。

Fiddle

2 个答案:

答案 0 :(得分:1)

您需要使用moment(string, string)moment分析其正在解析的数据的格式。事实上,如果你查看你的网络控制台,moment告诉你:

  

弃用警告:moment构造回落到js Date。这是不鼓励的,将在即将发布的主要版本中删除。有关详细信息,请参阅http://momentjs.com/guides/#/warnings/js-date/

所以:

moment("1/1/13", "M/D/YY").format("MM/DD/YYYY");
//             ^^^^^^^^^^----- the format to parse with

...假设日期是月/日/年订单(因为那是您输出的内容)。

示例(我稍微更改了日期,以便我们可以告诉几个月的日期)

console.log(moment("1/2/13", "M/D/YY").format("MM/DD/YYYY"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>

你在评论中说过:

  

我允许他们添加mm / dd / yyyy和mm / dd / yy格式。这不适用于1/1/1999

请参阅上面链接的文档,如果您想支持年份中的可变位数,请使用YYYY作为年份:

console.log(moment("1/2/13", "M/D/YYYY").format("MM/DD/YYYY"));
console.log(moment("1/2/1999", "M/D/YYYY").format("MM/DD/YYYY"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>

答案 1 :(得分:0)

这是因为Moment.js在创建新时刻时会使用def plt_configure(ax=None, xlabel='', ylabel='', title='', legend=False, tight=False, figsize=False): if ax == None : ax=plt.gca() plt.suptitle(title) else: ax.set_title(title) ax.set_xlabel(xlabel) ax.set_ylabel(ylabel) if legend: if isinstance(legend, dict): ax.legend(**legend) else: ax.legend() if tight: if tight == 'xtight' or tight == 'x': ax.autoscale(enable=True, axis='x', tight=True) elif tight == 'ytight': ax.autoscale(enable=True, axis='y', tight=True) else: ax.axis('tight') if figsize: plt.gcf().set_size_inches(figsize) 对象,不幸的是,它在Firefox和Chrome中的工作方式不同。

要测试它,只需尝试在两个浏览器中创建一个新日期。

# Use Case 1
plt_configure(xlabel='Direction', ylabel='Difference with ECDF', 
              legend={'loc':'best'},figsize=(8,2.5))
# Use Case 2
plt_configure(title='Direction Distribution Comparison',
              xlabel='Direction',ylabel='Frequency', legend={'loc': 'best'} ,tight='xtight',figsize = (8,2.5))

坦率地说,我很惊讶Chrome将此解释为2013年。为了安全和跨浏览器兼容,请写出全年。如果你是从外部来源获得这个,你应该只是能够解析它并将其重新格式化为更安全的缩短ISO格式,如下所示:

Date