使用 Moment.js 格式化日期

IT技术 javascript momentjs date-parsing
2021-02-02 01:27:04

我有一个这种格式的字符串:

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) 
6个回答

的第二个参数moment()解析格式而不是显示格式。

为此,您需要以下.format()方法

moment(testDate).format('MM/DD/YYYY');

另请注意,大小写确实很重要。对于 Month、Day of Month 和 Year,格式应为大写。

var obj = {end_date: moment($scope.activity.endDate).format('MM/DD/YYYY')};
2021-03-17 01:27:04
优秀的。我最初尝试像这个 moment().format() 一样使用它,但失败了。谢谢
2021-03-24 01:27:04
@JonathanLonowski 这可能是任何变量。我碰巧正在编程并寻找这个答案。只是一个例子。
2021-04-05 01:27:04
每当我使用格式时,我都无法在其上调用 date()。所以我不得不使用某种子字符串构造来从(“DD-MM-YYYY”)格式中获取一天。
2021-04-05 01:27:04
@MichaelCalkins 对不起。那是做什么用的?而且,为什么要额外引用 AngularJS ( $scope)?
2021-04-10 01:27:04

包括 moment.js 并使用以下代码可以格式化您的日期

var formatDate= 1399919400000;

var responseDate = moment(formatDate).format('DD/MM/YYYY');

我的输出是“13/05/2014”

@ArslanTariq 您可以用来momentObject.valueOf()从纪元中获取毫秒数。
2021-03-26 01:27:04
我怎样才能扭转这种局面?我的意思是如果我有后一种格式并想将其更改为第一种格式。
2021-03-28 01:27:04
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"
如果您解释此代码如何解决 OP 的问题,将会有所帮助
2021-04-06 01:27:04

你可能不再需要 Moment.js

Moment 是一个很好的时间操作库,但它被认为是一个遗留项目,团队建议使用其他

date-fns是最好的轻量级库之一,它是module化的,因此您可以选择所需的功能并减少包大小(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

对于从输出日期使用format. 第二时刻参数用于解析 - 但是,如果省略它,testDate则会导致弃用警告

弃用警告:提供的值不是公认的 RFC2822 或 ISO 格式...

要忽略此警告,您应该提供解析格式

太好了,首先我必须提供我们日期格式的标识符(格式),然后是所需格式。很好的例子。
2021-03-20 01:27:04