Як отримати рік / місяць / день від об’єкта дати?


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?
користувач198729

10
UTC поверне універсальний час. якщо ви хочете, щоб місцевий час використовував getMonth
Hiyasat

54
getUTCDay()слід замінити на getUTCDate(), оскільки day - це число дня в тижні (0-6), а дата - число дня в місяці (1-31).
Гжегож Оледзкі

4
Я вважаю, що ця відповідь все ще є недоліком. getUTCDate () дійсно поверне День місяця, але в Англії. Наприклад, якщо я введіть: var d = new Date ("21 липня 1983 01:15:00"); d.getDate () повертає 21, але d.getUTCDate () повертає лише 20 Це тому, що о 01:15 ранку у Франції (де я є), в Англії все ще 23:15. Щоб отримати день, який був у початковій даті, слід скористатись getDate ().
Паскаль Ганае

101
var dt = new Date();

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

Оскільки місячний індекс становить 0, ви повинні збільшити його на 1.

Редагувати

Повний перелік функцій об'єкта дати див

Дата

getMonth()

Повертає місяць (0-11) у вказану дату відповідно до місцевого часу.

getUTCMonth()

Повертає місяць (0-11) у вказану дату за загальним часом.


5
Потребує паронів. В іншому випадку жовтень з’явиться як 91 місяць (оскільки 9 + 1 = 91 у рядку)
грабувати

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, '/');
Мохамед Гешам

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 . Також там згадуються Луксон і дата-фни.
BradGreens

18

інформація

Якщо бажаний двозначний місяць і дата (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/

кредит

Більше інформації від та відповідь на цю відповідь

більше

Щоб дізнатися більше про спробувати себе редактор в W3Schools допоміг мені краще зрозуміти , як використовувати його..slice


Але якщо дата встановлена ​​на 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
Місяці на JavaScript Дата-об'єкти нульово індексуються. Обов’язково додайте до нього 1, інакше грудень може бути листопадом; Листопад повинен бути жовтнем і так далі
завершити роботу

1
@Aseem Просто повинен бути місяць, який потребує +1
Hastig Zusammenstellen


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

Ви можете просто скористатися цим кодом рядка, щоб отримати дату у форматі дати-року-місяця

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

-1

Я використовую це, що працює, якщо ви передаєте йому дату obj або 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 представив групи захоплення регулярних виразів, які можна використовувати для лову дня, місяця та року:

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/


Питання було конкретно запитувати про форматування дати в "місяць / день / рік" з об'єкта Date. Групи захоплення в регулярному виразі тут не застосовуються.
Колін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.