Fix Timestamp Parsing Error that renders Invalid Datetime (#252)

* fix: Some timestamps cannot be parsed

* fix: update dateToZulu to use try catch
This commit is contained in:
Jasmine Y 2024-05-04 01:59:19 +08:00 committed by GitHub
parent 7bbcbecc50
commit 046f8a7bac
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 21 additions and 7 deletions

View File

@ -517,9 +517,13 @@ module.exports = function (eleventyConfig) {
eleventyConfig.addFilter("dateToZulu", function (date) {
if (!date) return "";
return new Date(date).toISOString("dd-MM-yyyyTHH:mm:ssZ");
try {
return new Date(date).toISOString("dd-MM-yyyyTHH:mm:ssZ");
} catch {
return "";
}
});
eleventyConfig.addFilter("jsonify", function (variable) {
return JSON.stringify(variable) || '""';
});

View File

@ -1,7 +1,17 @@
<script src=" https://fastly.jsdelivr.net/npm/luxon@3.2.1/build/global/luxon.min.js "></script>
<script defer>
TIMESTAMP_FORMAT = "{{meta.timestampSettings.timestampFormat}}";
document.querySelectorAll('.human-date').forEach(function (el) {
el.innerHTML = luxon.DateTime.fromISO(el.getAttribute('data-date') || el.innerText).toFormat(TIMESTAMP_FORMAT);
});
TIMESTAMP_FORMAT = "{{meta.timestampSettings.timestampFormat}}";
document.querySelectorAll('.human-date').forEach(function (el) {
date = el.getAttribute('data-date') || el.innerText
parsed_date = luxon.DateTime.fromISO(date)
if (parsed_date.invalid != null){
// Date cannot be parsed
parsed_date = luxon.DateTime.fromSQL(date)
}
if (parsed_date.invalid != null){
// Date still cannot be parsed
parsed_date = luxon.DateTime.fromHTML(date)
}
el.innerHTML = parsed_date.toFormat(TIMESTAMP_FORMAT);
})
</script>

View File

@ -7,7 +7,7 @@ eleventyExcludeFromCollections: true
{% for page in collections.all %}
<url>
<loc>{{ meta.siteBaseUrl }}{{ page.url | url }}</loc>
<lastmod>{{ page.date.toISOString() }}</lastmod>
<lastmod>{{ page.date | dateToZulu }}</lastmod>
</url>
{% endfor %}
</urlset>