错误地获取日期属性的时刻

时间:2014-01-27 19:22:31

标签: javascript momentjs

我正在尝试使用MomentJS来支持我的应用程序中的日期处理。但是,我遇到了日期操作问题。

文件按以下顺序加载:

<script src="/javascripts/modules/moment/moment.min.js"></script>
<script src="/javascripts/modules/moment/moment-timezone.min.js"></script>
<script src="/javascripts/modules/moment/moment-timezone-data.js"></script>
<script src="/javascripts/modules/moment/moment-with-langs.min.js"></script>

现在在我的JS代码的某些部分,我将语言时刻改为FR或PT。

moment.lang('fr');

两种语言都将日期验证为"DD/MM/YYYY"而非美国模式。所以我期待一下 验证国家日期模式通过后的日期。

然后12/10/2014必须是:(12),(09),(2014),但它总是返回美国模式而不是正确模式。

我将日期属性设为:

console.log("DAY: " + moment(textDate).date());
console.log("MONTH: " + moment(textDate).month());
console.log("YEAR: " + moment(textDate).year());

其中textDate是我从文字输入中获取的日期。

##编辑##

我知道我可以将模式传递给Moment。即:

moment(textDate, 'DD/MM/YYYY');

对于我的申请,我使用的是这样的:

moment(textDate, '<%=lingua.general.time.pDate%>');

然而,它假设自动工作,不是吗?当然,如果您已经有必要的语言包。所以我之前提到过的方法应该是Works,无论如何。

1 个答案:

答案 0 :(得分:1)

如果你没有传递任何格式化参数,那么会让你的浏览器进行解析(除了完整的ISO时间戳)。

要说明进行解析的时间,并使用与该语言关联的本地化短日期格式,请传递L作为格式字符串:

moment(textDate, 'L')

请参阅文档:

此外,与您的问题无关,但与langs有关的时刻已经包含了moment.js的副本,因此您不需要这两个脚本。