开发者问题收集

如何正确获取日期和时间?

2016-11-13
42598

我是 React 的新手,想获取实际日期和时间,但我不知道该怎么做 :(

有人可以帮帮我吗!

我尝试获取初始状态的日期并每秒实现一次。当我运行它时,出现白屏。

import React from 'react';
import './Menubar.css';
import Time from 'react-time';

const Menubar = React.createClass({
getInitialState() {
    return {
        now: new Date().now(),
    };
},

getRealTime: function() {
    this.setState(
        {
            now: new Date().now(),
        })
},

/**
 * Render the Menubar component
 * @return {Component} the App Component rendered
 */
render() {
    setInterval(this.getRealTime(), 1000);
    return (
        <div className="Menubar">
            <ul className="Menubar-menu">
                <div className="">
                    <li className="Menubar-name">login name</li>
                    <li className="Menubar-date"><Time value={this.state.now} format="DD/MM/YYYY" /></li>
                    <li className="Menubar-time"><Time value={this.state.now} format="HH:mm:ss" /></li>
                </div>
            </ul>
        </div>
    );
}
});

export default Menubar;
3个回答

两件事:

  1. new Date().now() 不是函数, new Date() 返回当前日期和时间,因此无需添加它。
  2. 您尝试在渲染函数内设置状态(每次渲染时调用 getRealTime ,这会导致重新渲染)。据我了解,您希望每秒更新一次时间。您可以在 componentDidMount 中进行设置。

这是您的 Menubar 组件,其中修复了这些问题。我还清除了组件卸载时的间隔:

const Menubar = React.createClass({
  getInitialState() {
    return {
      now: new Date(),
    };
    this.interval = null;
  },

  componentDidMount: function() {
    const self = this;
    self.interval = setInterval(function() {
      self.setState({
        now: new Date(),
      });
    }, 1000);
  },

  componentWillUnmount: function() {
    clearInterval(this.interval);
  },

  render() {
    return (
      <div className="Menubar">
        <ul className="Menubar-menu">
          <div className="">
            <li className="Menubar-name">login name</li>
            <li className="Menubar-date"><Time value={this.state.now} format="DD/MM/YYYY" /></li>
            <li className="Menubar-time"><Time value={this.state.now} format="HH:mm:ss" /></li>
          </div>
        </ul>
      </div>
    );
  }
});
Fabian Schultz
2016-11-13

要获取当前日期,您可以使用

var dateVariable = new Date()
dateVariable.getDate()

或者,如果您想要完整形式的当前日期和时间,那么

var dateVariable = Date().toLocaleString()

您可以在以下位置找到可用方法的完整列表: https://hdtuto.com/article/react-js-get-current-date-and-time-example

上面的链接节省了我很多时间。希望它能起作用。祝您黑客愉快!

IronmanX46
2021-03-19

我只想补充 IronmanX46 的回答,但它不让我发表评论。

我想指出的是,您可以做与

var dateVariable = new Date()
dateVariable.getDate()
var dateVariable = Date().toLocaleString()

完全相同的事情,只需执行

var dateVariable = Date()

根据文档:

Date() When called as a function, returns a string representation of the current date and time. All arguments are ignored. The result is the same as executing new Date().toString().

有很多不错的网站可以为您提供如何做事的示例,但我发现阅读文档可以节省时间,文档通常包含示例。如果我看不懂文档,我会去查看其他示例。

日期文档链接

jake.csc
2022-07-05