formatCalendarDate = function (dateTime) {
return moment.utc(dateTime).format('LLL');
};
มันแสดง: "28 กุมภาพันธ์ 2013 09:24"
แต่ฉันต้องการที่จะลบเวลาในตอนท้าย ฉันจะทำสิ่งนั้นได้อย่างไร
formatCalendarDate = function (dateTime) {
return moment.utc(dateTime).format('LLL');
};
มันแสดง: "28 กุมภาพันธ์ 2013 09:24"
แต่ฉันต้องการที่จะลบเวลาในตอนท้าย ฉันจะทำสิ่งนั้นได้อย่างไร
คำตอบ:
ขออภัยที่จะไปช้ามาก แต่ถ้าคุณต้องการที่จะลบส่วนเวลาของmoment()
มากกว่าที่จะจัดรูปแบบมันก็คือรหัส:
.startOf('day')
startOf('day')
ซึ่งเป็นจุดเริ่มต้นของวันก่อนหน้า แก้ไขด้วยmoment(moment.utc('2013-10-29T00:00:00+00:00').startOf('day').format('LL')).startOf('day').toDate()
.startOf('day')
ไม่ได้ลบเวลาส่วนต่อ se เพียงแค่ตั้งเวลาเป็น 00:00:00 ดังนั้นใช่ตามที่แสดงความคิดเห็นโดย 'collin' คุณจะต้องระมัดระวังในการบันทึกวันที่ ทางเลือกที่ดีกว่าคือการใช้format('LL')
ตามที่ได้รับการตอบในหัวข้อนี้
someMoment.clone().startOf('day')
moment(someMoment).startOf('day')
moment().utc().add(1,'d').startOf('day')
จะรีเซ็ตวัตถุเป็นวันนี้
format('LL')
ทั้งนี้ขึ้นอยู่กับสิ่งที่คุณกำลังพยายามที่จะทำอย่างไรกับมันformat('LL')
สามารถทำเคล็ดลับ มันสร้างบางสิ่งเช่นนี้
Moment().format('LL'); // => April 29, 2016
วิธีที่ถูกต้องคือการระบุอินพุตตามความต้องการของคุณซึ่งจะทำให้คุณมีความยืดหยุ่นมากขึ้น
คำจำกัดความปัจจุบันประกอบด้วยสิ่งต่อไปนี้
LTS : 'h:mm:ss A',
LT : 'h:mm A',
L : 'MM/DD/YYYY',
LL : 'MMMM D, YYYY',
LLL : 'MMMM D, YYYY h:mm A',
LLLL : 'dddd, MMMM D, YYYY h:mm A'
คุณสามารถใช้สิ่งเหล่านี้หรือเปลี่ยนอินพุตที่ส่งผ่านไปยังช่วงเวลา (). รูปแบบ () moment.utc(dateTime).format('MMMM D, YYYY')
ตัวอย่างเช่นสำหรับกรณีของคุณคุณสามารถส่งผ่าน
formatCalendarDate = function (dateTime) {
return moment.utc(dateTime).format('LL')
}
คุณยังสามารถใช้รูปแบบนี้:
moment().format('ddd, ll'); // Wed, Jan 4, 2017
ด้วย moment.js เวอร์ชันที่ใหม่กว่าคุณสามารถทำสิ่งนี้ได้:
var dateTime = moment();
var dateValue = moment({
year: dateTime.year(),
month: dateTime.month(),
day: dateTime.date()
});
date: dateTime.date()
แทนday: dateTime.date()
?
day
ทำงานก่อนรุ่น 2.8.4
ตกลงดังนั้นฉันรู้ว่าฉันไปงานเลี้ยงสาย เหมือนสาย 6 ปี แต่นี่เป็นสิ่งที่ฉันต้องคิดออกมาและจัดรูปแบบ YYYY-MM-DD
moment().format(moment.HTML5_FMT.DATE); // 2019-11-08
2019-11-08T17:44:56.144
นอกจากนี้คุณยังสามารถส่งผ่านในพารามิเตอร์เช่น,
moment("2019-11-08T17:44:56.144").format(moment.HTML5_FMT.DATE); // 2019-11-08
เมื่อใดก็ตามที่ฉันใช้moment.js
ห้องสมุดฉันระบุรูปแบบที่ต้องการด้วยวิธีนี้:
moment(<your Date goes here>).format("DD-MMM-YYYY")
หรือ
moment(<your Date goes here>).format("DD/MMM/YYYY")
... ฯลฯ ฉันหวังว่าคุณจะได้รับความคิด
ภายในฟังก์ชั่นการจัดรูปแบบคุณวางรูปแบบที่ต้องการ ตัวอย่างข้างต้นจะกำจัดองค์ประกอบที่ไม่ต้องการทั้งหมดออกจากวันที่เช่นนาทีและวินาที
L
, LL
ฯลฯ )
สำหรับคนอย่างผมต้องการรูปแบบวันที่ยาว ( LLLL
) แต่ไม่มีเวลาของวันที่มีปัญหา GitHub ที่: https://github.com/moment/moment/issues/2505 สำหรับตอนนี้มีวิธีแก้ไข:
var localeData = moment.localeData( moment.locale() ),
llll = localeData.longDateFormat( 'llll' ),
lll = localeData.longDateFormat( 'lll' ),
ll = localeData.longDateFormat( 'll' ),
longDateFormat = llll.replace( lll.replace( ll, '' ), '' );
var formattedDate = myMoment.format(longDateFormat);
คุณสามารถใช้ตัวสร้างนี้
moment({h:0, m:0, s:0, ms:0})
http://momentjs.com/docs/#/parsing/object/
console.log( moment().format('YYYY-MM-DD HH:mm:ss') )
console.log( moment({h:0, m:0, s:0, ms:0}).format('YYYY-MM-DD HH:mm:ss') )
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
moment({h:0, m:0, s:0, ms:0})
จะให้ฉัน 1 มกราคม 1970 มากกว่าวันนี้
moment({ h: 0 })
จะทำเช่นเดียวกัน
Omitted units default to 0 or the current date, month, and year.
ลองสิ่งนี้:
moment.format().split("T")[0]
1993-06-07T22:00:00.000Z
กับ1993-06-07
การเริ่มต้นของวัน1993-06-08