Parsing string hingga saat ini dengan moment.js

Jawaban:

205

Anda harus menggunakan .format()fungsi ini.

MM - Nomor bulan

MMM - Kata bulan

var date = moment("2014-02-27T10:00:00").format('DD-MM-YYYY');
var dateMonthAsWord = moment("2014-02-27T10:00:00").format('DD-MMM-YYYY');

BIOLA

David East
sumber
Bagaimana dengan variabel tanggal yang ada. var date = moment("2014-02-27T10:00:00").format('DD-MM-YYYY'); var dateCalendarPart = moment(date).format('YYYY/MM/DD'); alert(date); alert(dateCalendarPart);Memberikan kesalahan tanggal yang tidak valid ?????
Hari Andrew
3
coba '' var dateCalendarPart = saat (tanggal, 'YYYY / MM / DD'); waspada (tanggal); ''
ranjan
@AndrewDay ... "01-02-2017", "2 Januari" atau "1 Februari"? Momentj tidak bisa membaca pikiran Anda.
daun
3
Jawaban ini hanya berfungsi karena string OP dalam format Tanggal standar. Jawaban Stephen Paul menunjukkan bagaimana mengkonversi string apa pun, diberikan format tertentu, ke tanggal yang dapat dimanipulasi.
Agamemnus
363

Sepertinya saya selalu menemukan diri saya mendarat di sini hanya untuk menyadari bahwa judul dan pertanyaan tidak cukup selaras.

Jika Anda ingin kencan sesaat dari sebuah string :

const myMoment = moment(str, 'YYYY-MM-DD')

Dari dokumentasi momen :

Alih-alih memodifikasi Date.prototype asli, Moment.js membuat pembungkus untuk objek Date.

Jika Anda menginginkan objek Tanggal javascript dari string :

const myDate = moment(str, 'YYYY-MM-DD').toDate();
Stephen Paul
sumber
16
Yap, hanya yang ini yang menjawab. Parsing string to date (artinya input str, out is date)
deathangel908
@ deathangel908 Lol, tidak perlu untuk klarifikasi, pertanyaannya sangat jelas.
daun
20

Tidak perlu moment.js untuk mengurai input karena formatnya adalah yang standar:

var date = new Date('2014-02-27T10:00:00');
var formatted = moment(date).format('D MMMM YYYY');

http://es5.github.io/#x15.9.1.15

daun
sumber
1
Itu kebenaran, tidak perlu moment.js jika Anda memiliki string tanggal ISO ... Anda juga bisa menggunakan Date.parse untuk lebih jelas bahwa Anda bekerja dengan string ISO (karena konstruktor dapat mengambil format lain)
Juan Mendes
3
Tidak bekerja di IE8 ... Mengejutkan ... Memberi NaN.
daun
@JuanMendes, tautan Anda mengatakan, Date.parsepanggilan itu new Date, jadi seharusnya tidak membuat perbedaan.
sk904861
6

saat itu sempurna untuk apa yang saya butuhkan. CATATAN itu mengabaikan jam dan menit dan hanya melakukan itu jika Anda membiarkannya. Ini sempurna bagi saya karena panggilan API saya mengembalikan tanggal dan waktu, tetapi saya hanya peduli tanggalnya.

function momentTest() {

  var varDate = "2018-01-19 18:05:01.423";
  var myDate =  moment(varDate,"YYYY-MM-DD").format("DD-MM-YYYY");
  var todayDate = moment().format("DD-MM-YYYY");  
  var yesterdayDate = moment().subtract(1, 'days').format("DD-MM-YYYY");   
  var tomorrowDate = moment().add(1, 'days').format("DD-MM-YYYY");

  alert(todayDate);

  if (myDate == todayDate) {
    alert("date is today");
  } else if (myDate == yesterdayDate) {
    alert("date is yesterday");
  } else if (myDate == tomorrowDate) {
    alert("date is tomorrow");
  } else {
    alert("It's not today, tomorrow or yesterday!");
  }
}
Gareth
sumber
0
  • Cara mengubah tanggal string apa pun menjadi tanggal objek (juga dengan moment.js):

let startDate = "2019-01-16T20:00:00.000"; let endDate = "2019-02-11T20:00:00.000"; let sDate = new Date(startDate); let eDate = new Date(endDate);

  • dengan moment.js:

startDate = moment(sDate); endDate = moment(eDate);

MorLavender
sumber