如何在澳大利亚和美国的时间格式中同时使用moment.js?
例如:
07/08/2017
- 对于两种时间格式都可以使用,但是!
30/08/2017
- 对于moment.js来说是无效的,但我可以有这样的日期时间。
您可以在此处进行检查:
如何在澳大利亚和美国的时间格式中同时使用moment.js?
例如:
07/08/2017
- 对于两种时间格式都可以使用,但是!
30/08/2017
- 对于moment.js来说是无效的,但我可以有这样的日期时间。
您可以在此处进行检查:
var now2 = moment('08/30/2017', 'MM-DD-YYYY').format('MMM DD h:mm A');
。您还可以指定一个包含不同格式的数组,以便它能够识别两种格式: var now2 = moment('08/30/2017', ['DD-MM-YYYY', 'MM-DD-YYYY']).format('MMM DD h:mm A');
。new Date(string)
,这是依赖于浏览器的(因此不一致)。此外,请在您的样例中修正格式,因为您使用了-
而不是 /
,并且请注意对于模棱两可的输入(例如问题中提到的07/08/2017
),格式顺序很重要。 - VincenzoC['DD/MM/YYYY', 'MM/DD/YYYY']
比使用['DD-MM-YYYY', 'MM-DD-YYYY']
没有任何好处,这就是我指出它的原因 :)。 - VincenzoC07/08/2017
,该代码将把其解释为8月7日。 - Matt Johnson-Pintvar now2 = moment('30/08/2017', 'DD/MM/YYYY').format('MMM DD h:mm A');
moment().format('DD/MM');
新的 moment 默认使用浏览器提供的当前日期/时间。 - emdmoment().format('DD/MM')
将输出字符串... 而不是对象。 - brabertaser19moment();
。 - emd2.2.1
),我建议升级到最新版 (2.18.1
)。根据链接 (Deprecation warning: value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.
moment(String)
文档) 中的提示,你需要指定格式以正确解析字符串。moment(String, String[])
解析函数。请注意以下几点:
因此,从版本 2.3.0 开始,Moment 使用一些简单的启发式方法来确定要使用哪个格式。按以下顺序:
- 首选能生成有效日期而不是无效日期的格式。
- 首选解析更多字符串而非更少的格式,即首选更严格的解析。
- 更喜欢数组中格式更早的元素。
07/08/2017
的解释方式取决于 格式数组 参数中格式的顺序。var now = moment('30/08/2017', ['MM/DD/YYYY','DD/MM/YYYY']);
var now2 = moment('08/30/2017', ['MM/DD/YYYY','DD/MM/YYYY']);
var now3 = moment('07/08/2017', ['MM/DD/YYYY','DD/MM/YYYY']);
console.log(now.format('MMM DD h:mm A')); // Aug 30 12:00 AM
console.log(now2.format('MMM DD h:mm A'));// Aug 30 12:00 AM
console.log(now3.format('MMM DD h:mm A'));// Jul 08 12:00 AM
var now4 = moment('30/08/2017', ['DD/MM/YYYY','MM/DD/YYYY']);
var now5 = moment('08/30/2017', ['DD/MM/YYYY','MM/DD/YYYY']);
var now6 = moment('07/08/2017', ['DD/MM/YYYY','MM/DD/YYYY']);
console.log(now4.format('MMM DD h:mm A')); // Aug 30 12:00 AM
console.log(now5.format('MMM DD h:mm A')); // Aug 30 12:00 AM
console.log(now6.format('MMM DD h:mm A')); // Aug 07 12:00 AM
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
07/08/2017
在两种格式中都是有效的,但它代表着完全不同的日期(7月8日和8月7日)。 - Matt Johnson-Pint