Javascript 如何获取当前日期

Javascript 如何获取当前日期,javascript,reactjs,Javascript,Reactjs,我想在我的组件中输出当前日期。 在控制台中,我的代码起作用,但React控制台显示: “bundle.js:14744未捕获范围错误:超过最大调用堆栈大小” 我的组件如下所示: import React from 'react'; var FontAwesome = require('react-fontawesome'); export class Date extends React.Component { constructor() { super();

我想在我的组件中输出当前日期。 在控制台中,我的代码起作用,但React控制台显示:

“bundle.js:14744未捕获范围错误:超过最大调用堆栈大小”

我的组件如下所示:

import React from 'react';
var FontAwesome = require('react-fontawesome');

export class Date extends React.Component {
    constructor() {
        super();

        var today = new Date(),
            date = today.getFullYear() + '-' + (today.getMonth() + 1) + '-' + today.getDate();

        this.state = {
            date: date
        };
    }

    render() {
        return (
            <div className='date'>
                <FontAwesome name='calendar' />{this.state.date}
            </div>
        );
    }
}
从“React”导入React;
var FontAwesome=require('react-FontAwesome');
导出类日期扩展React.Component{
构造函数(){
超级();
var today=新日期(),
date=today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate();
此.state={
日期:日期
};
}
render(){
返回(
{this.state.date}
);
}
}
是的,我知道我是个很好的初学者,但也许有人能帮我。我在谷歌上搜索了几个小时-


太多了

您的问题是您正在命名组件类
Date
。当您在类中调用
new Date()
时,它不会创建您期望它创建的
Date
的实例(这很可能)-它会尝试创建组件类的实例。然后构造函数将尝试创建另一个实例,另一个实例,另一个实例。。。直到堆栈空间用完并获得所看到的错误

如果要在类中使用
Date
,请尝试将类命名为不同的名称,例如
Calendar
DateComponent

原因是JavaScript处理名称范围的方式:每当您创建一个新命名的实体时,如果范围中已经有一个具有该名称的实体,那么该名称将停止引用以前的实体,并开始引用您的新实体。因此,如果在名为
Date
的类中使用名称
Date
,则名称
Date
将引用该类,而不是类定义开始之前存在的名为
Date
的任何对象。

选项1: 如果您想创建一个公共实用程序函数,那么可以使用

export function getCurrentDate(separator=''){

let newDate = new Date()
let date = newDate.getDate();
let month = newDate.getMonth() + 1;
let year = newDate.getFullYear();

return `${year}${separator}${month<10?`0${month}`:`${month}`}${separator}${date}`
}
选项2: 或者直接在类中定义和使用

getCurrentDate(separator=''){

let newDate = new Date()
let date = newDate.getDate();
let month = newDate.getMonth() + 1;
let year = newDate.getFullYear();

return `${year}${separator}${month<10?`0${month}`:`${month}`}${separator}${date}`
}
getCurrentDate(分隔符=“”){
设newDate=newDate()
让date=newDate.getDate();
让month=newDate.getMonth()+1;
让year=newDate.getFullYear();

返回`${year}${separator}${month您可以使用react-moment包

->

将下一行放入您的文件:

import moment from "moment";

date_create: moment().format("DD-MM-YYYY hh:mm:ss")
我的小进步

getCurrentDate(separator=''){

let newDate = new Date()
let date_raw = newDate.getDate();
let month_raw = newDate.getMonth() + 1;
let year = newDate.getFullYear();
var date, month
  
if (date_raw<10)  {  date ="0"+date_raw.toString()} else {  date =date_raw.toString()}
if (month_raw<10)  {  month ="0"+month_raw.toString()} else {  month =month_raw.toString()}


return (
    <div>{year}{separator}{month}{separator}{date}</div>
            );
}
getCurrentDate(分隔符=“”){
设newDate=newDate()
让date_raw=newDate.getDate();
让month_raw=newDate.getMonth()+1;
让year=newDate.getFullYear();
var日期,月份

如果(date_raw简单的解决方案是

{new Date().toLocaleString() + ''}

完整日期和时间:

{new Date().toLocaleString() + ""}
{new Date().toLocaleString("en-US", { month: "long" })}
{new Date().toLocaleString("en-US", { day : '2-digit})}
{new Date().getFullYear()}
仅提取月份(当前):

{new Date().toLocaleString() + ""}
{new Date().toLocaleString("en-US", { month: "long" })}
{new Date().toLocaleString("en-US", { day : '2-digit})}
{new Date().getFullYear()}
仅提取日期:

{new Date().toLocaleString() + ""}
{new Date().toLocaleString("en-US", { month: "long" })}
{new Date().toLocaleString("en-US", { day : '2-digit})}
{new Date().getFullYear()}
仅摘录年份:

{new Date().toLocaleString() + ""}
{new Date().toLocaleString("en-US", { month: "long" })}
{new Date().toLocaleString("en-US", { day : '2-digit})}
{new Date().getFullYear()}

JavaScript如何知道
new Date()
应该引用内置的
Date
类而不是
Date
组件?FWIW,这个问题与React无关。非常感谢!现在它可以工作了:)非常棒的解释+1:)非常好的解释,谢谢你!你救了我一天。现在可以了:)@StefanBecker三个不同的日期对象怎么样了?我只看到一个
new Date()
。我想我不了解日期对象是如何工作的,只是好奇而已。