Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Date plugin: Format the date from frontmatter exactly as I specified it #555

Open
brookback opened this issue Jan 19, 2024 · 3 comments
Open
Labels
enhancement New feature or request

Comments

@brookback
Copy link

brookback commented Jan 19, 2024

Enter your suggestions in details:

Hi! Not sure I'm holding this wrong, but I've got a (deceivingly simple) date problem.

Request

I want the specified date and time from my Markdown frontmatter to show in the built site. Currently, all dates and times are formatted in UTC (or whatever TZ is on the machine building the site).

Use case

For the date field in my posts' frontmatter, I use my current local time with time zone offset. Like this:

---
date: 2024-01-18 20:44:58 +7
location: Koh Lanta, Thailand
---

Note the included timezone offset.

When formatting that in the templates, I want that date and time to show. It works on my machine (classic!), but when building on CI for deploying, dates are showing in UTC.

Using the format string PPP — HH:mm:

January 18th, 2024 — 13:44

when I want:

January 18th, 2024 — 20:44

I just want whatever I input as the formatted output 😄

I've read about setting the TZ var when building with lume, but I can't do that, since the local time for each post might vary (I might post across timezones).

Also, I can't do my own hacky date parsing and formatting, since I don't have access to the raw frontmatter record on the Page data: I only have the already parsed date: Date.

Maybe this is out of scope for Lume, but I thought I'd ask. Thanks for a never ending great job ❤️


Info

  • Lume version: v1.13.1
  • OS: macOS 14.2.1

Related:

@brookback brookback added the enhancement New feature or request label Jan 19, 2024
@oscarotero
Copy link
Member

As an idea, you can preprocess the pages to change the Date. Let's say you create a new variable with the time zone:

date: 2024-01-18 20:44:58
timezone: Asia/Bangkok

And then process the pages assigning the correct timezone.

Lume 2 uses Temporal polyfill (in /deps/temporal.ts) which has functions to work with timezones (see docs here).

Let me know if you can solve it with this. If it works fine, maybe this could be a Lume plugin (Some people ask me about using different timezones in multilanguage sites).

@brookback
Copy link
Author

@oscarotero Thanks for replying.

Yes, that'd work too, with the added benefit of documentation in the frontmatter.

But if not, would it be improper to suggest that Lume provides the frontmatter as a part of the Page interface somewhere? As I touched upon in:

Also, I can't do my own hacky date parsing and formatting, since I don't have access to the raw frontmatter record on the Page data: I only have the already parsed date: Date.

As "raw" as possible, meaning, no string → Date parsing whatsoever. Just raw strings (and maybe number | boolean :)).

Or do you consider it leaky?

@oscarotero
Copy link
Member

That's no easy. The date parsing is not performed by Lume, but by yaml parsed https://deno.land/std@0.212.0/front_matter/mod.ts

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants