gpt4 book ai didi

javascript - 判断日期是包含天还是只包含月份信息

转载 作者:行者123 更新时间:2023-11-30 14:50:41 25 4
gpt4 key购买 nike

我想弄清楚是否有可能知道 moment 对象是否是用 daymonth 创建的。

示例

const date1 = moment("2018-08");
const date2 = moment("2018-08-01");

/* Determine if date1 was set with a day or not */

最佳答案

您可以使用 creationData()获取用于创建时刻对象的格式:

After a moment object is created, all of the inputs can be accessed with creationData() method:

moment("2013-01-02", "YYYY-MM-DD", true).creationData() === {
input: "2013-01-02",
format: "YYYY-MM-DD",
locale: Locale obj,
isUTC: false,
strict: true
}

在你的情况下,你可以使用类似的东西

if( date1.creationData().format.includes('DD') )

注意 date1.creationData().format 可以是 undefined


在这里,我使用 creationData() 编写了一个考虑更多边缘情况(无效时刻、从 JS 日期或 unix 时间戳创建的时刻对象)的函数。 , parsingFlags()invalidAt():

function isDaySet(m){
if( moment.isMoment(m) ){
if( !m.isValid() ){
return m.invalidAt() > 2;
}

let creationData = m.creationData();
if( creationData.format && creationData.format.includes('DD') ){
return true;
}
let parsingFlags = m.parsingFlags();
if( !parsingFlags.iso &&
typeof creationData.input === 'string' ){
let mFormatted = m.format('YYYY-MM-D');
return creationData.input.includes(mFormatted);
}
}
return false;
}

let arr = [
moment("2018-08"),
moment("2018-08-01"),
moment("2018-08-1"),
moment("2018-08-01 11"),
moment("01 02 2018", "DD MM YYYY"),
moment(1515424366),
moment("2018-08-01 27:77"),
moment("2018-Marbruary-01", 'YYYY-MMMM-DD'),
moment('Marbruary', 'MMMM')
];

arr.forEach((m) => {
console.log(isDaySet(m));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>

关于javascript - 判断日期是包含天还是只包含月份信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48150628/

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