Làm thế nào để có được năm / tháng / ngày từ một đối tượng ngày?


239

alert(dateObj) cho Wed Dec 30 2009 00:00:00 GMT+0800

Làm thế nào để có được ngày ở định dạng 2009/12/30?


2
Bạn muốn ngày và giờ UTC?
DOK

Câu trả lời:


406
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;

hoặc bạn có thể đặt ngày mới và đưa ra các giá trị trên


69
Chỉ cần nhớ: tháng 1 = 0, tháng 2 = 1, v.v.
Rubens Farias

9
Sự khác biệt giữa getMonthvà là getUTCMonthgì?
dùng198729

10
UTC sẽ trở lại thời gian phổ quát. nếu bạn muốn sử dụng giờ địa phương getMonth
Hiyasat

54
getUTCDay()nên được thay thế bởi getUTCDate(), vì ngày là số của ngày trong tuần (0-6) và ngày là số của ngày trong tháng (1-31).
Grzegorz Oledzki

4
Tôi tin rằng phản ứng này vẫn còn thiếu sót. getUTCDate () sẽ trả lại Ngày của tháng thực sự nhưng ở Anh. Ví dụ: nếu tôi gõ: var d = new Date ("ngày 21 tháng 7 năm 1983 01:15:00"); d.getDate () trả về 21 nhưng d.getUTCDate () chỉ trả về 20 Điều này là do vào lúc 1:15 sáng tại Pháp (nơi tôi đang ở), vẫn là 23:15 ở Anh. Để có được ngày trong Ngày ban đầu, bạn nên sử dụng getDate ().
Pascal Ganaye

101
var dt = new Date();

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

Vì chỉ số tháng là 0 dựa trên nên bạn phải tăng nó lên 1.

Biên tập

Để biết danh sách đầy đủ các chức năng đối tượng ngày, xem

Ngày

getMonth()

Trả về tháng (0-11) trong ngày đã chỉ định theo giờ địa phương.

getUTCMonth()

Trả về tháng (0-11) trong ngày đã chỉ định theo thời gian chung.


5
Nhu cầu parens. Nếu không, tháng mười sẽ hiển thị là tháng 91 (kể từ 9 + 1 = 91 ở chuỗi)
cướp

5
Nên là 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
Tôi nghĩ rằng điều này có thể tốt hơn cho trường hợp thứ ba mới Date (). ToISOString (). Split ('T') [0] .replace (/ - / g, '/');
Mohamed Hesham

28

Tôi sẽ đề nghị bạn sử dụng Moment.js http://momentjs.com/

Sau đó, bạn có thể làm:

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

Lưu ý: bạn không cần phải thêm new Date()nếu bạn muốn TimeDate hiện tại, tôi chỉ thêm nó dưới dạng tham chiếu mà bạn có thể truyền đối tượng ngày cho nó. đối với TimeDate hiện tại, nó cũng hoạt động:

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

1
Câu trả lời này là tốt nếu bạn muốn thêm một phụ thuộc - và nếu như vậy vào năm 2019 day.js là một sự thay thế trọng lượng nhẹ hơn cho khoảnh khắc như một tùy chọn để xem xét - github.com/iamkun/dayjs . Cũng đề cập có Luxon và date-fns.
BradGreen

18

thông tin

Nếu muốn có 2 chữ số tháng và ngày (2016/01/01 so với 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);

đầu ra

2016/10/06

vĩ cầm

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

tín dụng

Thêm thông tin từ và tín dụng cho câu trả lời này

hơn

Để tìm hiểu thêm về .slicebản dùng thử, trình soạn thảo tại w3schools đã giúp tôi hiểu rõ hơn cách sử dụng nó.


Nhưng nếu ngày được đặt thành Decemeber, nó không chuyển sang tháng 1 năm sau?
Hanz Cheah


13

Sử dụng các phương thức lấy ngày.

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

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

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

4
Các tháng trên các đối tượng Ngày JavaScript không được lập chỉ mục. Hãy chắc chắn để thêm 1 vào nó, tháng 12 khác là tháng 11; Tháng 11 sẽ là tháng 10 và cứ thế
cllpse

1
@Aseem Chỉ nên là tháng cần +1
Hastig Zusammenstellen

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

2
Để so sánh 2 ngày câu trả lời này là hàng đầu. Cảm ơn!
Dazag

9

CHÂU ÂU (TIẾNG ANH / SPANISH) ĐỊNH DẠNG
Tôi cũng cần có được ngày hiện tại, bạn có thể sử dụng cái này.

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);


* Đối với định dạng tiếng Tây Ban Nha, chỉ cần dịch biến TUẦN.

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


Đầu ra: Thứ Hai - 16/11/2015 14:24


6

Với câu trả lời được chấp nhận, ngày 1 tháng 1 sẽ được hiển thị như thế này : 2017/1/1.

Nếu bạn thích 2017/01/01, bạn có thể sử dụng:

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

5

Tại sao không đơn giản?

dateObj.toISOString().slice(0, 10) // YYYY-MM-DD

Kiểm tra tại đây:

const date1 = new Date('December 17, 1995 03:24:00');
console.log(date1.toISOString().slice(0, 10))


2

Dưới đây là cách dễ dàng hơn để nhận Năm / Tháng / Ngày với mẫu chữ:

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());

Để tham khảo bạn có thể xem chi tiết dưới đây

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)

// Trả lại số phút (0-59) Ngày mới (). GetMonth () // Trả lại tháng (0-11) Ngày mới (). GetSeconds () // Trả lại giây (0-59) Ngày mới () .getTime () // Trả lại thời gian (mili giây kể từ ngày 1 tháng 1 năm 1970)


1

Bạn chỉ có thể sử dụng mã một dòng này để nhận ngày ở định dạng năm tháng

var date = new Date().getFullYear() + "-" + new Date().getMonth() + 1 + "-" + new Date().getDate();

-1

Tôi đang sử dụng cái này hoạt động nếu bạn vượt qua nó một dấu thời gian obj hoặc js:

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 đã giới thiệu các nhóm chụp regex mà bạn có thể sử dụng để bắt ngày, tháng và năm:

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);

Ưu điểm của phương pháp này là khả năng nắm bắt ngày, tháng, năm đối với các định dạng ngày chuỗi không chuẩn.

Tham chiếu https://www.freecodecamp.org/news/es9-javascripts-state-of-art-in-2018-9a350643f29c/


Câu hỏi được hỏi cụ thể về việc định dạng một ngày trong "tháng / ngày / năm" từ một đối tượng Ngày. Các nhóm bắt trong regex không được áp dụng ở đây.
Colin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.