我有一个这种格式的字符串:
var testDate = "Fri Apr 12 2013 19:08:55 GMT-0500 (CDT)"
我想使用moment.js以此格式mm/dd/yyyy : 04/12/2013
获取它以供显示。
我尝试使用此方法
moment(testDate,'mm/dd/yyyy');
哪些错误并说there is no such method called replace
?我是以错误的方式接近这个吗?
编辑:
我还应该提一下,我正在使用一个预包装版本的moment.js,打包为meteor.js
Object [object Date] has no method 'replace' : The Exact error from the console
堆栈追踪:
at makeDateFromStringAndFormat (http://127.0.0.1:3000/packages/moment/lib/moment/moment.js?b4e3ac4a3d0794023a4410e7941c3e179398b5b0:539:29)
at moment (http://127.0.0.1:3000/packages/moment/lib/moment/moment.js?b4e3ac4a3d0794023a4410e7941c3e179398b5b0:652:24)
at populateProfileForEdit (http://127.0.0.1:3000/client/views/home/administration/directory/profiles/profiles.js?acfff908a6a099f37312f62892a22b40f82e5e0f:147:25)
at Object.Template.profile_personal.rendered (http://127.0.0.1:3000/client/views/home/administration/directory/profiles/profiles.js?acfff908a6a099f37312f62892a22b40f82e5e0f:130:13)
at Spark.createLandmark.rendered (http://127.0.0.1:3000/packages/templating/deftemplate.js?b622653d121262e50a80be772bf5b1e55ab33881:126:42)
at http://127.0.0.1:3000/packages/spark/spark.js?45c746f38023ceb80745f4b4280457e15f058bbc:384:32
at Array.forEach (native)
at Function._.each._.forEach (http://127.0.0.1:3000/packages/underscore/underscore.js?867d3653d53e9c7a171483edbcad9670e12288c7:79:11)
at http://127.0.0.1:3000/packages/spark/spark.js?45c746f38023ceb80745f4b4280457e15f058bbc:382:7
at _.extend.flush (http://127.0.0.1:3000/packages/deps/deps.js?9642a93ae1f8ffa8eb1c2475b198c764f183d693:231:11)
答案 0 :(得分:475)
moment()
的第二个参数是parsing format而不是显示格式。
为此,您需要.format()
method:
moment(testDate).format('MM/DD/YYYY');
另请注意,案件确实很重要。对于Month,Day和Year,格式应为大写。
答案 1 :(得分:37)
包含moment.js并使用以下代码,您可以格式化日期
var formatDate= 1399919400000;
var responseDate = moment(formatDate).format('DD/MM/YYYY');
我的输出是“13/05/2014”
答案 2 :(得分:4)
moment().format(); // "2019-08-12T17:52:17-05:00" (ISO 8601, no fractional seconds)
moment().format("dddd, MMMM Do YYYY, h:mm:ss a"); // "Monday, August 12th 2019, 5:52:00 pm"
moment().format("ddd, hA"); // "Mon, 5PM"
答案 3 :(得分:2)
要使用输出日期作为起始日期,请使用format
。第二点参数用于解析-但是,如果省略该参数,则testDate
将引起弃用警告
弃用警告:提供的值不是公认的RFC2822或ISO格式...
var testDate= "Fri Apr 12 2013 19:08:55 GMT-0500 (CDT)"
let s= moment(testDate).format('MM/DD/YYYY');
msg.innerText= s;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<div id="msg"></div>
要忽略此警告,您应该提供解析格式
var testDate= "Fri Apr 12 2013 19:08:55 GMT-0500 (CDT)"
let s= moment(testDate, 'ddd MMM D YYYY HH:mm:ss ZZ').format('MM/DD/YYYY');
console.log(s);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
答案 4 :(得分:1)
这可能会帮助一些人一个接一个地寻找多种日期格式,这是有意或无意的。 请找到代码: 我在当前日期上使用moment.js格式函数为(今天是2020年6月29日) var startDate = moment(new Date())。format('MM / DD / YY');结果:06/28/20
发生什么情况是,如果我运行以下语句,它仅将年份部分20保留为“ 06/28/20”: 新日期(开始日期) 结果为“ 1920年6月28日星期一格林尼治标准时间+0530(印度标准时间)”,
然后,当我在“ 06/28/20”上使用其他格式时:startDate = moment(startDate).format('MM-DD-YYYY');结果:06-28-1920,在谷歌浏览器和Firefox浏览器中,第二次尝试给出的正确日期为:06-28-2020。但是在IE中它有问题,据我了解,我们可以在给定日期上应用一个dateformat,如果我们想要第二个日期格式,则应在新日期上应用而不是第一个日期格式结果。 还要注意,首次在IE中应用“ MM-DD-YYYY”和下一个“ MM-DD-YY”。 为了清楚理解,请在链接中找到我的问题: Date went wrong when using Momentjs date format in IE 11
答案 5 :(得分:0)
Moment是很棒的时间操纵库,但是它被认为是旧版项目,并且团队建议使用其他libraries。
date-fns是最好的轻量级库之一,它是模块化的,因此您可以选择所需的功能并减小包的大小(issue和statement)。
在现代应用程序中反对使用Moment的另一个常见论点是它的大小。 Moment无法与现代的“摇树”算法配合使用,因此趋向于增加Web应用程序包的大小。
import { format } from 'date-fns' // 21K (gzipped: 5.8K)
import moment from 'moment' // 292.3K (gzipped: 71.6K)
使用date-fns
设置日期格式:
// moment.js
moment().format('MM/DD/YYYY');
// => "12/18/2020"
// date-fns
import { format } from 'date-fns'
format(new Date(), 'MM/dd/yyyy');
// => "12/18/2020"
备忘单上的更多功能列表,您可以使用它们替换moment.js:You-Dont-Need-Momentjs
答案 6 :(得分:0)
var moment = require('moment');
let yourdate = '2021-01-02T07:57:45.121Z'; // for example
moment(yourdate).format('MM/DD/YYYY');
// output : 01-02-2021
moment(yourdate).format('DD-MMM-YYYY');
// output : 01-Jan-2021
答案 7 :(得分:0)
您可以将“L”传递给 format
方法,该方法处理国际化...
moment.locale('en-US');
moment().format("L");
> "06/23/2021"
moment.locale('fr');
moment().format("L");
> "23/06/2021"
其他长日期格式(fr
语言环境):
LT : 'HH:mm',
LTS : 'HH:mm:ss',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY HH:mm',
LLLL : 'dddd D MMMM YYYY HH:mm'