【问题标题】:ReactJS Moment is not formatting date correctlyReactJS Moment 没有正确格式化日期
【发布时间】:2018-11-13 14:23:11
【问题描述】:

我有一个显示一周中第一个日期的功能,它的结果显示如下:

2018 年 11 月 12 日星期一 08:14:09 GMT-0600(中部标准时间)

...我试图做的是仅显示月份的结果: 2018-11-12

...这里是获取一周中第一天的函数:

let sd = new Date();
const startOfWeek = (date) => {
  let diff = date.getDate() - date.getDay() + (date.getDay() === 0 ? -6 : 1);
  return new Date(date.setDate(diff));
}

...我调用函数如下:

const startDay = startOfWeek(sd).toString();

...这是我使用 moment 应用格式的地方:

moment(startDay).format('YYYY MMMM Do');

...但我的日期仍然显示以下内容: 2018 年 11 月 12 日星期一 08:14:09 GMT-0600(中部标准时间)

...我能得到一些关于做错了什么的帮助吗?

【问题讨论】:

  • .format() 函数返回格式化字符串。它不会永远建立对象的格式。
  • 仅供参考,Moment 有一个startOf 功能...
  • 你可能还想看看Luxon,因为它使用不可变对象,这可能更适合 React。
  • 您能否在使用moment(startDay).format('YYYY MMMM Do'); 行的地方添加更多代码?目前尚不清楚为什么您在查看您的时刻格式字符串后得到输出“Mon Nov 12 2018 08:14:09 GMT-0600 (Central Standard Time)”。

标签: javascript reactjs momentjs


【解决方案1】:

我认为你正在寻找的那一刻js格式是:

moment(startDay).format('YYYY-MM-DD');

YYYY MMMM Do 格式会返回一个字符串,如:“2018 年 11 月 13 日”。

【讨论】:

  • 奇怪,这在输出到控制台时有效,但浏览器仍然显示以下内容:Mon Nov 12 2018 11:08:23 GMT-0600 (Central Standard Time) ... 显示日期在文本输入字段中,尽管我确实认为该节目有所作为。
【解决方案2】:

这应该可以,但是格式不正确,应该是YYYY-MM-D

let sd = new Date();
const startOfWeek = (date) => {
  let diff = date.getDate() - date.getDay() + (date.getDay() === 0 ? -6 : 1);
  return new Date(date.setDate(diff));
}
const startDay = startOfWeek(sd)
console.log(moment(startDay).format('YYYY-MM-D'));

【讨论】:

  • 谢谢,成功了,即使在控制台中输出,格式也是我想要的; ...但是,通过浏览器,它仍然显示 Mon Nov 12 2018 10:54:17 GMT-0600 (Central Standard Time) ...当通过控制台输出时,您的补救措施仍然有效。任何理想为什么要反映在网页中?我正在使用 Reactjs
  • 你是如何显示它的?你能分享你的sn-p吗?
猜你喜欢
  • 1970-01-01
  • 2018-12-08
  • 1970-01-01
  • 1970-01-01
  • 2021-02-06
  • 1970-01-01
  • 2019-12-06
  • 2013-09-18
  • 1970-01-01
相关资源
最近更新 更多