Как получить год / месяц / день из объекта даты?


240

alert(dateObj) дает Wed Dec 30 2009 00:00:00 GMT+0800

Как получить дату в формате 2009/12/30?


2
Вы хотели дату и время UTC?
ДОК

Ответы:


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).
Гжегож Оледзки

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 ();
Паулюс Уза

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
Я думаю, что это может быть лучше для третьего случая new Date (). ToISOString (). Split ('T') [0] .replace (/ - / g, '/');
Мохамед Хешам

28

Я бы предложил вам использовать Moment.js http://momentjs.com/

Тогда вы можете сделать:

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

Примечание: вам new Date()на самом деле не нужно добавлять, если вы хотите текущий TimeDate, я только добавил его в качестве ссылки, чтобы вы могли передать ему объект даты. для текущей даты времени это также работает:

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

1
Этот ответ хорош, если вы хотите добавить зависимость - и если да, то с 2019 г. day.js - это более легкая альтернатива moment.js, которую можно рассмотреть, - github.com/iamkun/dayjs . Также упоминается, что есть Luxon и date-fns.
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/

кредит

Больше информации и кредит на этот ответ

Больше

Чтобы узнать больше о редакторе.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
Месяцы в JavaScript Объекты Date индексируются нулем. Не забудьте добавить 1 к нему, иначе декабрь станет ноябрем; Ноябрь станет октябрем и т. Д.
2010 г.

1
@Aseem Должен быть месяц, которому нужно +1
Хастиг Зусамменстеллен,

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

2
Для сравнения 2 даты этот ответ является топ. Спасибо!
Дазаг

9

ЕВРОПА (АНГЛИЙСКИЙ / ИСПАНСКИЙ) ФОРМАТ
I, вам также нужно узнать текущий день, вы можете использовать этот.

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) new Date (). GetMonth () // Возвращаем месяц (0-11) new Date (). GetSeconds () // Возвращаем секунды (0-59) new Date () .getTime () // Возвращает время (миллисекунды с 1 января 1970 года)


1

Вы можете просто использовать этот однострочный код, чтобы получить дату в формате год-месяц-дата

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

-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 представил группы захвата регулярных выражений, которые можно использовать для определения дня, месяца и года:

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.