สตริงวันที่ momentJS เพิ่ม 5 วัน


154

ฉันมีสตริงวันที่เริ่มต้น "20.03.2014" และฉันต้องการเพิ่ม 5 วันในขณะนี้ด้วย moment.js แต่ฉันไม่ได้รับวันที่ใหม่ "25.03.2014" ในหน้าต่างการแจ้งเตือน

ที่นี่รหัสจาวาสคริปต์ของฉัน:

startdate = "20.03.2014";
var new_date = moment(startdate, "DD-MM-YYYY").add("DD-MM-YYYY", 5);

alert(new_date);

ที่นี่ jsfiddle ของฉัน: http://jsfiddle.net/jbgUt/1/

ฉันจะแก้ปัญหานี้อย่างไร

ฉันชอบรูปแบบสตริงนี้ "25.03.2014"

หวังว่าใครบางคนสามารถช่วยฉันได้

คำตอบ:


326

ปรับปรุง: 19 มกราคม 2559

ณ ขณะนี้ 2.8.4 - ใช้.add(5, 'd')(หรือ.add(5, 'days')) แทน.add('d', 5)

var new_date = moment(startdate, "DD-MM-YYYY").add(5, 'days');

ขอบคุณ @Bala สำหรับข้อมูล

อัปเดต: 21 มีนาคม 2014

นี่คือสิ่งที่คุณต้องทำเพื่อให้ได้รูปแบบนั้น

นี่คือซอที่อัพเดท

startdate = "20.03.2014";
var new_date = moment(startdate, "DD-MM-YYYY").add('days', 5);

var day = new_date.format('DD');
var month = new_date.format('MM');
var year = new_date.format('YYYY');

alert(day + '.' + month + '.' + year);

เดิม: 20 มีนาคม 2014

คุณไม่ได้บอกวิธีเพิ่มหน่วย / หน่วย ใช้ -

 var new_date = moment(startdate, "DD-MM-YYYY").add('days', 5);

ฉันต้องการที่จะเห็นรูปแบบนี้ "25.03.2014" ในหน้าต่างการแจ้งเตือนฉันจะใช้มันได้อย่างไร?
เดฟ

2
ณ ขณะนี้-2.8.4 ฉันสามารถเห็นข้อความที่เลิกใช้แล้วพร้อมกับเพิ่ม ('วัน', 5) ใช้เพิ่ม (5, 'วัน') แทน
บาลา

ไวยากรณ์ที่ถูกต้อง: moment (). เพิ่ม (5, 'days'). format ("D / M / YYYY") คุณสามารถดูได้ที่นี่: momentjs.com/docs/#/manipulating/add
Costas Bakoulias

16

ฟังก์ชั่นเพิ่ม () ส่งคืนวันที่เก่า แต่เปลี่ยนวันที่เดิม :)

startdate = "20.03.2014";
var new_date = moment(startdate, "DD.MM.YYYY");
new_date.add(5, 'days');
alert(new_date);

5
ใช่มันแปลก เมื่อตรวจสอบmoment(startdate).add(5, 'days')ในคอนโซลคุณจะได้รับMoment {_isAMomentObject: true, _i: "[the original date]",}และฉันแน่ใจว่าaddวิธีการไม่ทำงาน หลังจากใช้เวลาไม่กี่นาทีฉันก็ตระหนักว่าวิธีการทำงานเพราะถ้าคุณเปิดวัตถุที่คุณได้รับMoment _d : [The date with the addition] _f : "YYYY-MM-DDTHH:mm:ss" _i : [The original date]... วันที่มีการเปลี่ยนแปลงจริง (คุณจะได้รับผลลัพธ์ที่ถูกต้องด้วยmoment(startdate).add(5, 'days').format('YYYYMMDD')) แต่มันสับสนว่าดูเหมือนว่าวันที่มี ' เปลี่ยนไปแล้ว : - |
Gilad Barner

14
moment(moment('2015/04/09 16:00:00').add(7, 'd').format('YYYY/MM/DD HH:mm:mm'))

ต้องจัดรูปแบบแล้วแปลงเป็นช่วงเวลาอีกครั้ง


คุณช่วยฉันหลายนาที
:)



3
  1. เพิ่มhttps://momentjs.com/downloads/moment-with-locales.js ไปยังหน้า html ของคุณ
  2. var todayDate = moment().format('DD-MM-YYYY');//to get today date 06/03/2018 if you want to add extra day to your current date แล้วก็
  3. var dueDate = moment().add(15,'days').format('DD-MM-YYYY')// to add 15 days to current date..

จุดที่ 2 และ 3 กำลังใช้งานในรหัส jquery ของคุณ ...


2

คุณสามารถลดสิ่งที่พวกเขาพูดในโค้ดไม่กี่บรรทัด:

var nowPlusOneDay = moment().add('days', 1);
var nowPlusOneDayStr = nowPlusOneDay.format('YYYY-MM-DD');

alert('nowPlusOneDay Without Format(Unix Date):'+nowPlusOneDay);
alert('nowPlusOneDay Formatted(String):'+nowPlusOneDayStr);

2

ในการรับตัวอย่างการทำงานจริงที่ดำเนินไปซึ่งจะส่งคืนสิ่งที่คาดหวัง

var startdate = "20.03.2014";
var new_date = moment(startdate, "DD.MM.YYYY");
var thing = new_date.add(5, 'days').format('DD/MM/YYYY');
window.console.log(thing)

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