我有一个这样格式的字符串:
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');
哪个错误并说没有这样的方法称为替换?我用错方法了吗?
Edit
我还应该提到,我使用的是一个预先打包的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)
这可能有助于一些人谁正在寻找多种日期格式一个接一个地自愿或意外。
请查看代码:
我在当前日期上使用moment.js格式函数(今天是29-06-2020)
var startDate = moment(new Date()).format('MM/DD/YY');结果:06/28/20
发生的事情是它只保留了年份部分:20作为“06/28/20”,如果我运行语句:
新日期(startDate可以)
结果是“周一6月28日格林威治时间1920 00:00:00 +0530(印度标准时间)”,
Then, when I use another format on "06/28/20": startDate = moment(startDate ).format('MM-DD-YYYY'); Result: 06-28-1920, in google chrome and firefox browsers it gives correct date on second attempt as: 06-28-2020. But in IE it is having issues, from this I understood we can apply one dateformat on the given date, If we want second date format, it should be apply on the fresh date not on the first date format result.
And also observe that for first time applying 'MM-DD-YYYY' and next 'MM-DD-YY' is working in IE.
For clear understanding please find my question in the link:
Date went wrong when using Momentjs date format in IE 11
你可以将“L”传递给format方法,它处理国际化…
moment.locale('en-US');
moment().format("L");
> "06/23/2021"
moment.locale('fr');
moment().format("L");
> "23/06/2021"
其他长日期格式(fr locale):
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'
文档:https://momentjs.com/docs/#/displaying/format/(见“本地化格式”)
你可能不再需要Moment.js了
Moment是一个很棒的时间操作库,但它被认为是一个遗留项目,团队建议使用其他库。
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 don - need - momentjs