Javascript 如何获取当前日期
我想在我的组件中输出当前日期。 在控制台中,我的代码起作用,但React控制台显示: “bundle.js:14744未捕获范围错误:超过最大调用堆栈大小” 我的组件如下所示: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();
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()
。我想我不了解日期对象是如何工作的,只是好奇而已。