我允许用户在日期字段中手动添加日期。 如果用户输入日期为1/1/13,我期待结果为01/01/2013。 这就是我正在使用的。 代码:
moment("1/1/13").format('MM/DD/YYYY')
在Chrome中工作正常,但在FF和IE中没有工作,它显示的是01/01/1913而不是01/01/2013。
答案 0 :(得分:1)
您需要使用moment(string, string)
为moment
分析其正在解析的数据的格式。事实上,如果你查看你的网络控制台,moment
告诉你:
弃用警告:
moment
构造回落到jsDate
。这是不鼓励的,将在即将发布的主要版本中删除。有关详细信息,请参阅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