moment.js ile tarihi biçimlendir


262

Bu biçimde bir dize var:

var testDate = "Fri Apr 12 2013 19:08:55 GMT-0500 (CDT)"

Moment.js kullanarak mm/dd/yyyy : 04/12/2013görüntülemek için bu biçimde olsun istiyorum .

Bu yöntemi kullanarak yapmaya çalıştım,

moment(testDate,'mm/dd/yyyy');

Hangi hatalar ve diyor there is no such method called replace? buna yanlış mı yaklaşıyorum?

Düzenle:

Ayrıca meteor.js için paketlenmiş moment.js'nin önceden paketlenmiş bir sürümünü kullandığımı da belirtmeliyim

Object [object Date] has no method 'replace' : The Exact error from the console

Yığın izleme:

 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) 

1
replace()Kodunuzu kullanıyor musunuz ? Değilse, kullandığınız eklenti uygunsuz bir şekilde varolmayan bir yöntemi çağırıyor.
cereallarceny

Sorumumu tam hata ve yığın izlemesini 'replace' olarak adlandırılan yöntemle güncelledim. Ben hiçbir zaman doğrudan yerine çağırmak değilim
Warz

Yanıtlar:


591

2nd argümanı moment()bir olan ayrıştırma biçimi yerine bir gösterim biçimi.

Bunun için .format()yöntemi istersiniz :

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

Ayrıca durumun önemli olduğunu unutmayın. Ay, Ay Günü ve Yıl için biçim büyük harf olmalıdır.


Mükemmel. Başlangıçta bu moment (). Format () gibi kullanmaya çalıştı, hangi başarısız oldu. Teşekkürler
Warz

var obj = {end_date: moment ($ scope.activity.endDate) .format ('AA / GG / YYYY')};
Michael J. Calkins

@MichaelCalkins Üzgünüm. O ne için? Ve neden AngularJS ( $scope) için ek referans ?
Jonathan Lonowski

@JonathanLonowski Bu herhangi bir değişken olabilir. Bu cevabı programlama ve arıyordum. Sadece bir örnek.
Michael J. Calkins

Ne zaman biçim kullanın, ben tarih () çağıramıyorum. Bu yüzden bir gün ("DD-AA-YYYY") biçimini kapmak için bir çeşit alt dize yapısı kullanmak zorunda kaldım.
Henk Jansen

49

Moment.js dosyasını ekleyin ve aşağıdaki kodu kullanarak tarihinizi biçimlendirebilirsiniz

var formatDate= 1399919400000;

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

Çıktım "13/05/2014"


1
Bunu nasıl tersine çevirebilirim? Yani daha sonraki bir formata sahipsem ve birincisini değiştirmek istiyorsam.
Arslan Tariq

2
@ArslanTariq dönemden momentObject.valueOf()milisaniye almak için kullanabilirsiniz .
WesternGun

8
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"

1
Bu kodun OP sorununu nasıl çözdüğünü açıklarsanız yardımcı olacaktır .
Robert Columbia

5

Çıkış tarihini kullanmak için format. İkinci moment argümanı ayrıştırma içindir - ancak bunu atlarsanız testDatekullanımdan kaldırma uyarısına neden olursunuz

Kullanımdan kaldırma uyarısı: sağlanan değer, tanınan bir RFC2822 veya ISO biçiminde değil ...

bu uyarıyı atlamak için ayrıştırma biçimi sağlamalısınız


Harika, önce tarih formatımızın tanımlayıcısını (format) sonra arzu formatını sağlamalıyım. güzel bir örnek.
Sudhir K Gupta
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.