แยกสตริงวันที่กับ moment.js


176

ฉันต้องการแยกสตริงต่อไปนี้ด้วย moment.js 2014-02-27T10: 00: 00และวันที่ส่งออกเดือนปี (14 มีนาคม 2014) ฉันได้อ่านเอกสาร แต่ไม่ประสบความสำเร็จ http://momentjs.com/docs/# / แยก / ตอน /

คำตอบ:


207

คุณต้องใช้.format()ฟังก์ชั่น

MM - จำนวนเดือน

MMM - คำเดือน

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

ซอ


สิ่งที่เกี่ยวกับตัวแปรวันที่ที่มีอยู่ var date = moment("2014-02-27T10:00:00").format('DD-MM-YYYY'); var dateCalendarPart = moment(date).format('YYYY/MM/DD'); alert(date); alert(dateCalendarPart);ให้ข้อผิดพลาดวันที่ไม่ถูกต้อง ?????
วันแอนดรูวันที่

3
ลอง '' var dateCalendarPart = สักครู่ (วันที่, 'YYYY / MM / DD'); แจ้งเตือนวันที่ (); ''
ranjan

@AndrewDay ... "01-02-2017", "2 มกราคม" หรือ "1 กุมภาพันธ์" โมเมนจ์ไม่สามารถอ่านใจคุณได้
ใบไม้

3
คำตอบนี้ใช้ได้เฉพาะเนื่องจากสตริงของ OP อยู่ในรูปแบบวันที่มาตรฐาน คำตอบของสตีเฟ่นพอลแสดงให้เห็นถึงวิธีการแปลงสตริงใด ๆ ที่กำหนดรูปแบบเฉพาะเป็นวันที่สามารถจัดการได้
Agamemnus

364

ฉันมักจะพบว่าตัวเองลงจอดที่นี่เพื่อรับรู้ว่าชื่อและคำถามนั้นไม่ได้อยู่ในแนวเดียวกัน

ถ้าคุณต้องการช่วงเวลาจากสตริง :

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

จากเอกสารทันที :

แทนการแก้ไข Date.prototype ดั้งเดิม Moment.js สร้าง wrapper สำหรับวัตถุ Date

หากคุณต้องการวัตถุวันที่จาวาสคริปต์จากสตริง :

const myDate = moment(str, 'YYYY-MM-DD').toDate();

16
ใช่แค่คำตอบเดียวเท่านั้น การแยกสตริงวันที่ (หมายถึงอินพุตเป็น str, out is date)
deathangel908

@ deathangel908 ฮ่า ๆ ไม่จำเป็นต้องชี้แจงก็เป็นคำถามที่ชัดเจนอย่างสมบูรณ์
leaf

20

ไม่จำเป็นต้องใช้ moment.js ในการแยกวิเคราะห์อินพุตเนื่องจากรูปแบบเป็นแบบมาตรฐาน:

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


1
นั่นเป็นความจริงไม่จำเป็นต้องมี moment.js ถ้าคุณมีสตริงวันที่ ISO ... คุณสามารถใช้Date.parseเพื่อให้ชัดเจนยิ่งขึ้นว่าคุณกำลังทำงานกับสตริง ISO (เนื่องจากตัวสร้างสามารถใช้รูปแบบอื่น)
Juan Mendes

3
ไม่ทำงานใน IE8 ... NaNสิ่งที่สร้างความประหลาดใจให้
ใบไม้

@JuanMendes ลิงก์ของคุณบอกว่าการDate.parseโทรnew Dateนั้นไม่ควรสร้างความแตกต่าง
sk904861

6

ช่วงเวลาที่สมบูรณ์แบบสำหรับสิ่งที่ฉันต้องการ หมายเหตุมันจะละเว้นชั่วโมงและนาทีและเพียงทำมันถ้าคุณปล่อยให้มัน นี่เป็นสิ่งที่สมบูรณ์แบบสำหรับฉันเนื่องจากการเรียก API ของฉันนำวันที่กลับมาและเวลา แต่ฉันสนใจเฉพาะวันที่เท่านั้น

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!");
  }
}


0
  • วิธีการเปลี่ยนวันที่ของสตริงใด ๆ เป็นวันที่วัตถุ (ยังมี 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);

  • กับ moment.js:

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.