如何从日期对象获取年/月/日?


239

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

如何获取格式的日期2009/12/30


2
您想要UTC日期和时间吗?
DOK 2010年

Answers:


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 2010年

10
UTC将返回世界时间。如果您想当地时间使用getMonth
Hiyasat,2010年

54
getUTCDay()应该用代替getUTCDate(),因为day是星期几(0-6),date是月几(1-31)。
Grzegorz Oledzki 2010年

4
我相信这种回应仍然存在缺陷。getUTCDate()确实会返回该月的某天,但在英国。例如,如果我键入:var d = new Date(“ 1983年7月21日01:15:00”); d.getDate()返回21,但d.getUTCDate()仅返回20,这是因为在法国(我在这里)的早晨01:15,在英国仍然是23:15。要获取原始日期中的日期,应使用getDate()。
Pascal Ganaye '16

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在Stringland中为91)
抢劫

5
应该是dt.getFullYear()+“ /” +(dt.getMonth()+ 1)+“ /” + dt.getDate();
Paulius Uza 2013年

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,'/');
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和date-fns。
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/

信用

更多信息并归功于此答案

更多

要了解有关w3schools .slice的“ 尝试一下”的更多信息,我帮助我更好地了解了如何使用它。


但是,如果将日期设置为Decemeber,它不转发到明年1月吗?
Hanz Cheah '18


13

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

4
JavaScript日期对象上的月份为零索引。确保将其添加1,否则12月变为11月;11月将成为10月,以此类推
cllpse 2010年

1
@Aseem应该只是需要+1的月份
Hastig Zusammenstellen

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

2
要比较2个日期,此答案是最高的。谢谢!
扎扎

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


输出:星期一-2015年11月16日14:24


6

有了接受的答案,1月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();

6

为什么不简单?

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

在这里检查:

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


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()//返回时间(自1970年1月1日以来的毫秒数)



-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对象以“月/日/年”格式化日期的问题。正则表达式中的捕获组不适用于此处。
科林
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.