繁体   English   中英

Moment 和 date-fns 格式化日期不正确

[英]Moment and date-fns formatting date incorrect

我一直在尝试将 zulu 格式日期格式化为正常日期,即 MM/dd/yyyy,到目前为止,我已经尝试过 date-fns 和 moment。 我的日期是2022-11-03T19:48:24Z我希望它的格式为11/03/2022但我得到的是11/04/2022 ,我不明白为什么要在日期上加一天我该如何解决这个问题?

export function fDate(
  date: Date | string | number,
  template: string = 'MM/dd/yyyy'
) {
  return format(new Date(date), template);
}
fDate('2022-11-03T19:48:24Z')

预期结果 11/03/2022 但得到 11/04/2022

format来自 date-fns

当您使用像 moment.js 或 date-fns 这样的库时,不要使用Date构造函数来解析 date_time 字符串。 相反,请使用您要使用的库中适用的构造函数或方法。

瞬间.js

您问题中张贴的符号与要求的符号不匹配。 符号dD具有不同的含义。 yY也是如此。 查看文档页面https://momentjs.com/docs/

以下代码生成的正确结果为11/03/2022

var moment = require('moment');  

console.log(moment("2022-11-03T19:48:24Z").format('MM/DD/YYYY'));

在您的代码中,这将实现为

return moment(date).format('MM/DD/YYYY');

日期-fns

您问题中发布的符号与所需的符号匹配。

以下代码生成的正确结果为11/03/2022

const fns = require('date-fns')

console.log(fns.format(fns.parseISO('2022-11-03T19:48:24Z'), 'MM/dd/yyyy'))

在您的代码中,这将实现为

return fns.format(fns.parseISO(date), 'MM/dd/yyyy');

使用 moment 的parseZone帮助了我

export function fDateISOStringToDate(
  date: string,
  template: string = "MM/DD/YYYY"
) {

  return moment.parseZone(date).format(template);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM