this.state.date = "20190704153907"
moment(this.state.date).format("DD MMMM YYYY hh:mm:ss")
我收到无效日期
我尝试以不同的格式显示相同的内容
预期输出:
4 July 2019 15:39:07
答案 0 :(得分:0)
您的日期确实无效。 Check the parsing docs
您可以尝试通过正则表达式对其进行修改,以匹配已知的日期格式或等效形式。
答案 1 :(得分:0)
如果您在控制台中查看,则会收到来自Moment的警告:
弃用警告:提供的值不是公认的RFC2822或ISO格式。此刻的构建工作归结于js Date(),它在所有浏览器和版本之间都不可靠。不建议使用非RFC2822 / ISO日期格式,并将在即将发布的主要版本中将其删除。有关更多信息,请参阅http://momentjs.com/guides/#/warnings/js-date/。
您用于日期字符串的格式不是ISO格式,并且“特定于实现的启发式或特定于实现的日期格式” ¹可能不支持允许JavaScript引擎猜测您的意思。
解决方案是tell Moment the format:
const date = "20190704153907";
const m = moment(date, "YYYYMMDDHHmmss");
console.log(m.format("DD MMMM YYYY hh:mm:ss"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
请注意,它将输出04
,而不是您的预期输出中的4
。如果您想用4
代替04
,请删除D
字符串中的format
之一(例如.format(..., "D MMMM YYYY hh:mm:ss")
):
const date = "20190704153907";
const m = moment(date, "YYYYMMDDHHmmss");
console.log(m.format("D MMMM YYYY hh:mm:ss"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>