Code:
let modifiedValue = attribute_value;
let isISOFormat = moment(new Date(attribute_value), moment.ISO_8601, true).isValid();
if (isISOFormat) {
modifiedValue = formatDateShortCustom(moment(attribute_value).toDate());
}
return modifiedValue;
};
In the code above, the attribute value can have
2021-09-29T18:30:00.000Z080921I want to make sure that when the attribute_value is in (1) format the code
modifiedValue = formatDateShortCustom(moment(attribute_value).toDate());
should execute.
However, this numerical string is also causing the isISOFormat as true hence navigating the formatDateShortCustom method, which I don't want?
Is there anything I am doing wrong?
I'd suggest wrapping this in a function isISOFormat() and using this to decide whether your input is an ISO 8601 date string.
I'd also suggest passing the input directly to the moment() constructor, rather than creating a Date first:
let attribute_values = ['2021-09-28T11:45:00Z', new Date().toISOString(), 20, null, '28/09/2021', 'is this a date?'];
function testIsISOFormat() {
for(let attribute_value of attribute_values) {
console.log(`isISOFormat(${attribute_value}):`, isISOFormat(attribute_value));
}
}
function isISOFormat(input) {
return moment(input, moment.ISO_8601, true).isValid();
}
console.log('Testing isISOFormat:');
testIsISOFormat()
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
I'd suggest wrapping this in a function isISOFormat() and using this to decide whether your input is an ISO 8601 date string.
I'd also suggest passing the input directly to the moment() constructor, rather than creating a Date first:
let attribute_values = ['2021-09-28T11:45:00Z', new Date().toISOString(), 20, null, '28/09/2021', 'is this a date?'];
function testIsISOFormat() {
for(let attribute_value of attribute_values) {
console.log(`isISOFormat(${attribute_value}):`, isISOFormat(attribute_value));
}
}
function isISOFormat(input) {
return moment(input, moment.ISO_8601, true).isValid();
}
console.log('Testing isISOFormat:');
testIsISOFormat()
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With