Bagaimana cara mendapatkan tahun / bulan / hari dari objek kencan?

240

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

Bagaimana cara mendapatkan tanggal dalam format 2009/12/30?

pengguna198729
sumber
2
Anda ingin tanggal dan waktu UTC?
DOK

Jawaban:

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;

atau Anda dapat mengatur tanggal baru dan memberikan nilai-nilai di atas

Hiyasat
sumber
69
Ingat saja: Januari = 0, Februari = 1, dan seterusnya.
Rubens Farias
9
Apa perbedaan antara getMonthdan getUTCMonth?
user198729
10
UTC akan mengembalikan waktu universal. Jika Anda ingin waktu setempat, gunakan getMonth
Hiyasat
54
getUTCDay()harus diganti dengan getUTCDate(), karena hari adalah jumlah hari dalam minggu (0-6) dan tanggal adalah jumlah hari dalam sebulan (1-31).
Grzegorz Oledzki
4
Saya kira respons ini masih cacat. getUTCDate () akan mengembalikan Hari di bulan itu tetapi di Inggris. Sebagai contoh jika saya mengetik: var d = Tanggal baru ("21 Juli 1983 01:15:00"); d.getDate () mengembalikan 21 tetapi d.getUTCDate () mengembalikan hanya 20. Ini karena pukul 01:15 pagi di Perancis (di mana saya), masih 23:15 di Inggris. Untuk mendapatkan hari pada Tanggal asli Anda harus menggunakan getDate ().
Pascal Ganaye
101
var dt = new Date();

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

Karena indeks bulan berbasis 0, Anda harus menambahnya dengan 1.

Edit

Untuk daftar lengkap fungsi objek tanggal, lihat

Tanggal

getMonth()

Mengembalikan bulan (0-11) pada tanggal yang ditentukan sesuai dengan waktu setempat.

getUTCMonth()

Mengembalikan bulan (0-11) pada tanggal yang ditentukan sesuai dengan waktu universal.

rahul
sumber
5
Membutuhkan orangtua. Kalau tidak, Oktober akan muncul sebagai bulan 91 (sejak 9 + 1 = 91 di stringland)
merampok
5
Harus berupa 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"
davidcondrey
sumber
2
Saya pikir ini bisa lebih baik untuk kasus baru Date ketiga (). ToISOString (). Split ('T') [0] .replace (/ - / g, '/');
Mohamed Hesham
28

Saya sarankan Anda untuk menggunakan Moment.js http://momentjs.com/

Maka Anda dapat melakukan:

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

Catatan: Anda sebenarnya tidak perlu menambahkan new Date()jika Anda ingin TimeDate saat ini, saya hanya menambahkannya sebagai referensi bahwa Anda dapat mengirimkan objek tanggal ke sana. untuk TimeDate saat ini, ini juga berfungsi:

moment().format("YYYY/MM/DD");
fmsf
sumber
1
Jawaban ini bagus jika Anda ingin menambahkan ketergantungan - dan jika demikian pada 2019 day.js adalah alternatif yang lebih ringan daripada moment.js sebagai opsi untuk dipertimbangkan - github.com/iamkun/dayjs . Disebutkan juga ada Luxon dan date-fns.
BradGreens
18

info

Jika 2 digit bulan dan tanggal diinginkan (2016/01/01 vs 2016/1/1)

kode

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

keluaran

2016/10/06

biola

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

kredit

Info lebih lanjut dari dan kredit untuk jawaban ini

lebih

Untuk mempelajari lebih lanjut tentang .sliceyang mencoba sendiri Editor di W3Schools membantu saya memahami lebih baik bagaimana menggunakannya.

Hastig Zusammenstellen
sumber
Tetapi jika tanggal ditetapkan ke Decemeber, itu tidak diteruskan ke Januari tahun depan?
Hanz Cheah
13

Gunakan metode Date Date.

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();
Aseem Gautam
sumber
4
Bulan pada objek JavaScript Tanggal diindeks nol. Pastikan untuk menambahkan 1 ke dalamnya, kalau tidak Desember akan menjadi November; November akan menjadi Oktober dan seterusnya
cllpse
1
@Aseem Seharusnya hanya bulan yang membutuhkan +1
Hastig Zusammenstellen
12
var date = new Date().toLocaleDateString()
"12/30/2009"
aldokkani
sumber
2
Untuk membandingkan 2 tanggal, jawaban ini teratas. Terima kasih!
Dazag
9

FORMAT EROPA (BAHASA INGGRIS / SPANYOL)
Saya perlu mendapatkan hari ini juga, Anda dapat menggunakan yang ini.

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


* Untuk format Spanyol, cukup terjemahkan variabel MINGGU.

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


Output: Senin - 16/11/2015 14:24

Philip Enc
sumber
6

Dengan jawaban yang diterima, 1 Jan akan ditampilkan seperti ini: 2017/1/1.

Jika suka 2017/01/01, Anda dapat menggunakan:

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

Kenapa tidak sederhana saja?

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

Periksa di sini:

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

João Pimentel Ferreira
sumber
2

Berikut ini cara yang lebih bersih untuk mendapatkan Tahun / Bulan / Hari dengan literal templat:

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

ExillustX
sumber
2
let dateObj = new Date();

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

Untuk referensi Anda dapat melihat detail di bawah ini

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)

// Kembalikan menit (0-59) Tanggal baru (). GetMonth () // Kembalikan bulan (0-11) Tanggal baru (). GetSeconds () // Kembalikan detik (0-59) Tanggal baru () .getTime () // Kembalikan waktu (milidetik sejak 1 Januari 1970)

Srikrushna
sumber
1

Anda cukup menggunakan kode satu baris ini untuk mendapatkan tanggal dalam format tahun-bulan-tanggal

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

Saya menggunakan ini yang berfungsi jika Anda memberikan objek tanggal atau cap waktu:

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);
    }
}
alex toader
sumber
-1

ES2018 memperkenalkan kelompok tangkapan regex yang dapat Anda gunakan untuk menangkap hari, bulan dan tahun:

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

Keuntungan dari pendekatan ini adalah kemungkinan untuk menangkap hari, bulan, tahun untuk format tanggal string yang tidak standar.

Ref. https://www.freecodecamp.org/news/es9-javascripts-state-of-art-in-2018-9a350643f29c/

Przemek Struciński
sumber
Pertanyaan itu secara khusus menanyakan tentang memformat tanggal dalam "bulan / hari / tahun" dari objek Tanggal. Grup tangkap di regex tidak berlaku di sini.
Colin