Compare Time to Determine if Now is Today


#1

Given the following front matter:

sale_ends = 2017-11-14

Is there a way to determine if now is the same day as sale_ends? I don’t mind exploring more on my own, but I’m not sure if there’s a simple way or if I should start reviewing the Go docs linked from now. Thank you!


#2

I haven’t tried , but you should be able to use time function to convert that sale_ends string to time.Time format, and then .Unix to convert that time and now time to seconds, and then take a difference of those. You can know if the time is already past if the difference is negative/positive. Based on the difference amount, you can also tell if the sale_ends day is the same as today now (which is actually the date the site was last published, not necessarily today).

Related example: https://gohugo.io/functions/unix/#example-time-passed-since-last-modification

Also, I am assuming that you already looked at setting expirydate in the front-matter? If you want to just not publish a post beyond certain date, just use that variable in the front-matter so that you don’t need to do that date math.


#3

With .Date you can easily convert to Unix time for comparison to now (".Date.Unix" “ge” now.Unix), but it looks like you need to convert your field instead of a date parameter, so you could probably do something like {{.Params.sale_end | dateFormat "20060102"}} and use that to compare to now. You’ll have to convert now in whatever date format you choose to match (e.g. {{now.Format "20060102"}}). I think that will work.


#4

I have a bit of code to highlight posts updated within 3 days, hope this will be helpful:

use YearDay is really convenient.

...
 {{ if lt (sub now.YearDay .Lastmod.YearDay) 3 }}
      <span class="last-modified">updated within {{ sub now.YearDay .Lastmod.YearDay }} days</span>
 {{ end }}
...