วิธีรับปี / เดือน / วันจากวัตถุวันที่?


239

alert(dateObj) จะช่วยให้ Wed Dec 30 2009 00:00:00 GMT+0800

วิธีรับรูปแบบวันที่2009/12/30?


2
คุณต้องการ UTC วันที่และเวลา?
DOK

คำตอบ:


407
var dateObj = new Date();
var month = dateObj.getUTCMonth() + 1; //months from 1-12
var day = dateObj.getUTCDate();
var year = dateObj.getUTCFullYear();

newdate = year + "/" + month + "/" + day;

หรือคุณสามารถกำหนดวันที่ใหม่และให้ค่าข้างต้น


69
เพียงจำไว้ว่า: มกราคม = 0, กุมภาพันธ์ = 1 และต่อไปเรื่อย ๆ
รูเบนส์ฟาเรีย

9
ความแตกต่างระหว่างgetMonthและgetUTCMonthคืออะไร
user198729

10
UTC จะส่งคืนเวลาสากล ถ้าคุณต้องการใช้เวลาท้องถิ่น getMonth
Hiyasat

54
getUTCDay()ควรถูกแทนที่ด้วยgetUTCDate()เนื่องจากวันคือจำนวนวันในสัปดาห์ (0-6) และวันที่คือจำนวนวันในเดือน (1-31)
Grzegorz Oledzki

4
ฉันเชื่อว่าคำตอบนี้ยังมีข้อบกพร่อง getUTCDate () จะส่งคืนวันที่ของเดือน แต่ในอังกฤษ ตัวอย่างเช่นถ้าฉันพิมพ์: var d = new Date ("21 กรกฎาคม 1983 01:15:00"); d.getDate () ผลตอบแทนที่ 21 แต่ d.getUTCDate () ผลตอบแทนเพียง 20 นี่เป็นเพราะที่ 01:15 ในตอนเช้าในฝรั่งเศส (ที่ฉันอยู่) มันยังคงเป็น 23:15 ในอังกฤษ ในการรับวันที่เป็นวันที่ดั้งเดิมคุณควรใช้ getDate ()
Pascal Ganaye

101
var dt = new Date();

dt.getFullYear() + "/" + (dt.getMonth() + 1) + "/" + dt.getDate();

เนื่องจากดัชนีรายเดือนเป็น 0 คุณจะต้องเพิ่มขึ้นทีละ 1

แก้ไข

สำหรับรายการฟังก์ชันวัตถุวันที่ทั้งหมดให้ดู

วันที่

getMonth()

ส่งคืนเดือน (0-11) ในวันที่ที่ระบุตามเวลาท้องถิ่น

getUTCMonth()

ส่งคืนเดือน (0-11) ในวันที่ที่ระบุตามเวลาสากล


5
ความต้องการ parens มิฉะนั้นตุลาคมจะแสดงเป็นเดือน 91 (ตั้งแต่ 9 + 1 = 91 ใน stringland)
ปล้น

5
ควรเป็น dt.getFullYear () + "/" + (dt.getMonth () + 1) + "/" + dt.getDate ();
Paulius Uza

90
new Date().toISOString()
"2016-02-18T23:59:48.039Z"
new Date().toISOString().split('T')[0];
"2016-02-18"
new Date().toISOString().replace('-', '/').split('T')[0].replace('-', '/');
"2016/02/18"

new Date().toLocaleString().split(',')[0]
"2/18/2016"

2
ฉันคิดว่านี่น่าจะดีกว่าสำหรับกรณีที่สามใหม่ Date (). toISOString (). split ('T') [0] .replace (/ - / g, '/');
Mohamed Hesham

28

ฉันอยากจะแนะนำให้คุณใช้ Moment.js http://momentjs.com/

จากนั้นคุณสามารถทำได้:

moment(new Date()).format("YYYY/MM/DD");

หมายเหตุ: คุณไม่จำเป็นต้องเพิ่มจริง ๆnew Date()หากคุณต้องการ TimeDate ปัจจุบันฉันเพิ่มมันเป็นข้อมูลอ้างอิงที่คุณสามารถส่งวัตถุวันที่ไปยังมันได้ สำหรับ TimeDate ปัจจุบันนี้ยังใช้งานได้:

moment().format("YYYY/MM/DD");

1
คำตอบนี้เป็นสิ่งที่ดีถ้าคุณต้องการที่จะเพิ่มการพึ่งพา - และถ้าเป็นเช่นนั้นเป็นของ 2019 day.js เป็นทางเลือกที่มีน้ำหนักเบาเพื่อ moment.js เป็นตัวเลือกที่จะต้องพิจารณา - github.com/iamkun/dayjs ยังกล่าวถึงว่ามี Luxon และเดทกับเพื่อน
BradGreens

18

ข้อมูล

หากต้องการเดือนและวันที่ 2 หลัก (2016/01/01 กับ 2016/1/1)

รหัส

var dateObj = new Date();
var month = ('0' + (dateObj.getMonth() + 1)).slice(-2);
var date = ('0' + dateObj.getDate()).slice(-2);
var year = dateObj.getFullYear();
var shortDate = year + '/' + month + '/' + date;
alert(shortDate);

เอาท์พุต

2016/10/06

ซอ

https://jsfiddle.net/Hastig/1xuu7z7h/

เครดิต

ข้อมูลเพิ่มเติมจากและให้เครดิตกับคำตอบนี้

มากกว่า

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ.sliceการลองแก้ไขด้วยตัวเองที่ w3schools ช่วยให้ฉันเข้าใจวิธีใช้งานได้ดีขึ้น


แต่ถ้าวันที่ถูกตั้งค่าเป็น Decemeber จะไม่ส่งต่อไปยังเดือนมกราคมปีหน้าใช่หรือไม่
Hanz Cheah


13

ใช้วิธีการรับวันที่

http://www.tizag.com/javascriptT/javascriptdate.php

http://www.htmlgoodies.com/beyond/javascript/article.php/3470841

var dateobj= new Date() ;
var month = dateobj.getMonth() + 1;
var day = dateobj.getDate() ;
var year = dateobj.getFullYear();

4
เดือนในวัตถุวันที่ของจาวาสคริปต์จะไม่มีการทำดัชนี อย่าลืมเพิ่ม 1 ลงไปมิฉะนั้นเดือนธันวาคมจะเป็นเดือนพฤศจิกายน พฤศจิกายนจะเป็นเดือนตุลาคมและต่อ ๆ ไป
cllpse

1
@ Aseem ควรเป็นเดือนที่ต้องการ +1
Hastig Zusammenstellen

12
var date = new Date().toLocaleDateString()
"12/30/2009"

2
เพื่อเปรียบเทียบ 2 วันที่คำตอบนี้อยู่ด้านบน ขอบคุณ!
Dazag

9

รูปแบบยุโรป (ภาษาอังกฤษ / ภาษาสเปน) รูปแบบ
ฉันต้องการวันปัจจุบันเช่นกันคุณสามารถใช้วันนี้ได้

function getFormattedDate(today) 
{
    var week = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
    var day  = week[today.getDay()];
    var dd   = today.getDate();
    var mm   = today.getMonth()+1; //January is 0!
    var yyyy = today.getFullYear();
    var hour = today.getHours();
    var minu = today.getMinutes();

    if(dd<10)  { dd='0'+dd } 
    if(mm<10)  { mm='0'+mm } 
    if(minu<10){ minu='0'+minu } 

    return day+' - '+dd+'/'+mm+'/'+yyyy+' '+hour+':'+minu;
}

var date = new Date();
var text = getFormattedDate(date);


* สำหรับรูปแบบภาษาสเปนเพียงแปลตัวแปร WEEK

var week = new Array('Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado');


ผลลัพธ์: วันจันทร์ - 16/11/2015 14:24 น


6

ด้วยคำตอบที่ยอมรับจะมีการแสดงวันที่ 1 มกราคมดังนี้: 2017/1/1มกราคมจะแสดงเช่นนี้

หากคุณต้องการ2017/01/01คุณสามารถใช้:

var dt = new Date();
var date = dt.getFullYear() + '/' + (((dt.getMonth() + 1) < 10) ? '0' : '') + (dt.getMonth() + 1) + '/' + ((dt.getDate() < 10) ? '0' : '') + dt.getDate();


2

นี่คือวิธีที่สะอาดกว่าในการรับปี / เดือน / วันด้วยตัวอักษรแม่แบบ:

var date = new Date();
var formattedDate = `${date.getFullYear()}/${(date.getMonth() + 1)}/${date.getDate()}`;
console.log(formattedDate);


2
let dateObj = new Date();

let myDate = (dateObj.getUTCFullYear()) + "/" + (dateObj.getMonth() + 1)+ "/" + (dateObj.getUTCDate());

สำหรับการอ้างอิงคุณสามารถดูรายละเอียดด้านล่าง

new Date().getDate()          // Return the day as a number (1-31)
new Date().getDay()           // Return the weekday as a number (0-6)
new Date().getFullYear()      // Return the four digit year (yyyy)
new Date().getHours()         // Return the hour (0-23)
new Date().getMilliseconds()  // Return the milliseconds (0-999)
new Date().getMinutes()       // Return the minutes (0-59)
new Date().getMonth()         // Return the month (0-11)
new Date().getSeconds()       // Return the seconds (0-59)
new Date().getTime()          // Return the time (milliseconds since January 1, 1970)

let dateObj = new Date();

let myDate = (dateObj.getUTCFullYear()) + "/" + (dateObj.getMonth() + 1)+ "/" + (dateObj.getUTCDate());

console.log(myDate)

// ส่งคืนนาที (0-59) วันที่ใหม่ (). getMonth () // ส่งคืนเดือน (0-11) วันที่ใหม่ (). getSeconds () // ส่งคืนวินาที (0-59) วันที่ใหม่ () .getTime () // คืนเวลา (มิลลิวินาทีนับตั้งแต่ 1 มกราคม 1970)



-1

ฉันใช้สิ่งนี้ซึ่งทำงานถ้าคุณผ่านวันที่ obj หรือ js timestamp:

getHumanReadableDate: function(date) {
    if (date instanceof Date) {
         return date.getDate() + "/" + (date.getMonth() + 1) + "/" + date.getFullYear();
    } else if (isFinite(date)) {//timestamp
        var d = new Date();
        d.setTime(date);
        return this.getHumanReadableDate(d);
    }
}

-1

ES2018 แนะนำกลุ่มการจับภาพ regex ซึ่งคุณสามารถใช้เพื่อจับวันเดือนและปี:

const REGEX = /(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2});
const results = REGEX.exec('2018-07-12');
console.log(results.groups.year);
console.log(results.groups.month);
console.log(results.groups.day);

ข้อดีของวิธีนี้คือสามารถจับวันเดือนปีสำหรับรูปแบบวันที่ของสตริงที่ไม่ได้มาตรฐาน

อ้าง https://www.freecodecamp.org/news/es9-javascripts-state-of-art-in-2018-9a350643f29c/


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