gpt4 book ai didi

javascript - Moment.js 格式化 "Date(2021,0,1)"

转载 作者:行者123 更新时间:2023-12-04 08:03:07 24 4
gpt4 key购买 nike

我正在使用 moment.js,需要帮助转换以下字符串:

let dtString = "Date(2021,0,1)";
let dt = moment(dtString, 'YYYY,M,D').format('l');
"Date(2021,0,1)"有一个从零开始的月份。上面的代码返回无效日期。
当我尝试时 "Date(2021,1,1)" , dt返回 1/1/2021。
我怎样才能有时间认识到 M value 是从零开始的月份并返回 "Date(2021,0,1)" 2021 年 1 月 1 日?
更新:
这是我刚刚尝试过的其他东西......它再次笨拙但有效。

let dtString = "Date(2021,0,1)";
let dtArray = dtString.replace("Date(", "").replace(")", "").split(",").map(Number);
let jsDate = new Date(dtArray[0], dtArray[1], dtArray[2]);
let dt = moment(jsDate).format('l');
console.log(dt);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>

更新 2:
结合@kometen 和@eskew,我发现这也有效。谢谢两位!

let dtString = "Date(2021,0,1)";
let dtArray = dtString.replace("Date(", "").replace(")", "").split(",").map(Number);
let dt = moment(dtArray).format('l');
console.log(dt);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>

最佳答案

一种稍微笨拙的方法是解析 dtString成其零件,然后在 moment() constructor's parameter in an array structure 中重新组装它们,这将告诉 momentjs 以与原生 Date 相同的方式解析它们API 将(包括零索引月份值等):

let dtString = "Date(2021,0,1)";
let dtStringFormat = /Date\((?<Year>\d{4}),(?<Month>\d{1,2}),(?<Day>\d{1,2})\)/g;
let groups = dtStringFormat.exec(dtString).groups;
let dt = moment(Object.values(groups));
console.dir(dt);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js" integrity="sha512-qTXRIMyZIFb8iQcfjXWCO8+M5Tbc38Qi5WzdPOYZHIlZpzBHG3L3by84BBBOiRGiEb7KKtAOAs5qYdUiZiQNNQ==" crossorigin="anonymous"></script>

关于javascript - Moment.js 格式化 "Date(2021,0,1)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66353113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com