我一直在尝试使用 date-fns 格式化日期,但我一直失败。基本上我可以用 momentJS 很好地工作,但不能用 date-fns:
这是我的约会:
"10-13-20" // month, day, and year
现在有了 momentJS,它就可以像这样工作了:
let result = moment("10-13-20", 'MM-DD-YY').format()
// result = "2020-10-13T00:00:00-06:00"
所以我尝试使用 date-fns 做同样的事情,但没有运气。有人能指出我正确的方向吗?预先感谢!
let result = format(new Date("10-13-20"), 'MM-DD-YY') // Not working
如您所见,使用
moment
lib,我们需要 2 个步骤才能获得结果:将字符串解析为 Date
对象,然后将日期对象格式化为字符串。
您的代码 -
format(new Date("10-13-20"), 'MM-DD-YY')
是 format
步骤,尝试将日期对象转换为格式模板为 MM-DD-YY
的字符串。但您的日期对象不正确。
解决方案是与
moment
lib 执行相同的操作:
const date = "2021-12-20"
console.log(format(parseISO(date), "dd-MM-yyyy"));
// output: 20-12-2021
与 Moment.js 不同,date-fns 不会自动解析“10-13-20”等非标准日期字符串。
parse函数允许您指定输入字符串的格式。
const parsedDate = parse("10-13-20", 'MM-dd-yy', new Date());
一旦获得解析后的 Date 对象,就可以使用 date-fns 的格式化函数对其进行 format 。
const formattedDate = format(parsedDate, "yyyy-MM-dd'T'HH:mm:ssxxx");
console.log(parseISO("2014-02-11T11:30:30"));
// Tue Feb 11 2014 11:30:30 GMT+0100 (Central European Standard Time)
const parsedDate = dateFns.parse("10-13-20", 'MM-dd-yy', new Date());
const formattedDate = dateFns.format(parsedDate, "yyyy-MM-dd'T'HH:mm:ssXXX");
console.log(formattedDate)
<script src="https://cdn.jsdelivr.net/npm/[email protected]/cdn.min.js"></script>