Textpattern CMS support forum
You are not logged in. Register | Login | Help
- Topics: Active | Unanswered
Re: etc_date : custom dates and calendars
Version 0.2.8: easier dates comparison:
<txp:etc_if_date date="expires" compare="now..+3 days" format="%s">
This article expires within 3 days!
</txp:etc_if_date>
Offline
Re: etc_date : custom dates and calendars
Version 0.2.9: and a new <txp:etc_date_diff />
tag:
<txp:etc_if_date date="expires" compare="now..+3 days" format="%s">
This article expires in less than <txp:etc_date_diff from="yesterday" to="expires" /> days!
</txp:etc_if_date>
Offline
Re: etc_date : custom dates and calendars
Version 0.3: introduces date ranges, so it’s possible to output date lists like
<txp:etc_date date="today..expires" />
Now can be used as container too:
<txp:etc_date date="sunday..sunday +6 days" wraptag="p" break=", ">
<txp:etc_date timestamp='<txp:etc_timestamp />' format="%A" /> -
<txp:etc_date timestamp='<txp:etc_timestamp />' format="%A" lang="ru_RU" />
</txp:etc_date>
outputs
Sunday - Воскресенье , Monday - Понедельник , Tuesday - Вторник , Wednesday - Среда , Thursday - Четверг , Friday - Пятница , Saturday - Суббота
Offline
Re: etc_date : custom dates and calendars
Hi Oleg,
I saw your example of a countdown above, and you date + x days example with etc_date too.
Does that mean, you can add a number of days to an existing date to make a message expire automatically after x days, or to begin a message the day after a date?
An example: I have a course site with key dates stored as variables, and a little self-built macro, txp:datum, that pulls out the variables and reformats them in different formats for use in the text or calendar.
Would the following be correct?
Example: begin a message a day after a submission deadline
<txp:etc_if_date value='<txp:datum date="apply-by" format="%s" /> +1 day..<txp:datum date="confirm-by" format="%s" />' format="%s">
<p>Applications are now closed. We will inform successful applicants shortly.</p>
</txp:etc_if_date>
Example: final message that should begin a day after the course is over and auto-expire 10 days later
<txp:etc_if_date value='<txp:datum date="course-end" format="%s" /> +1 day..<txp:datum date="course-end" format="%s" /> +10 days' format="%s">
<p>The course is over. Thank you to all who came.</p>
</txp:etc_if_date>
Have I understood that correctly?
TXP Builders – finely-crafted code, design and txp
Offline
Re: etc_date : custom dates and calendars
Hi Julian,
This will not work, since
<txp:etc_if_date format="%s"
value='<txp:datum date="apply-by" format="%s" /> +1 day..<txp:datum date="confirm-by" format="%s" />' />
will try to literally compare the current %s
-formatted date (say, 1485788875
) with something like 1485780000 +1 day
.
Additionally, strtotime
function used in etc_date
will not correctly interpret 1485780000 +1 day
. You need to change the format to get some English date from <txp:datum />
and use compare
attribute, something like
<txp:etc_if_date compare='<txp:datum date="apply-by" format="%c" /> +1 day..<txp:datum date="confirm-by" format="%c" />'>
<p>Applications are now closed. We will inform successful applicants shortly.</p>
</txp:etc_if_date>
Hope it helps.
Offline
Re: etc_date : custom dates and calendars
Brilliant, thank you – I wasn’t sure which strftime combinations worked. My ‘datum’ macro has some plain-language attributes/presets (deutsch, deutsch_text, etc.) for easier use by editors in articles, but can output any strftime date format.
As I don’t have any times set in the variables, can I also use %x
instead (and is that better or worse)?
Or would it be better to explicitly specify a certain output given that my server is based in Germany and I’m not sure if that locale plays well with +1 days
, etc. – and if so, what’s best %m/%d/%Y
(America) or %d/%m/%Y
(British) or %F
(aka %Y-%m-%d
)?
The other thing I haven’t quite worked out with etc_date is which attributes to use when, and in which combination. In your last example, you have compare
without a date
attribute. I didn’t realise that was possible. Am I right in assuming that when no date is given, it compares against the current server date?
TXP Builders – finely-crafted code, design and txp
Offline
Re: etc_date : custom dates and calendars
AFAIK, strtotime
is not localized, so you’d better use something like %F
, which should be ok.
jakob wrote #303750:
Am I right in assuming that when no date is given, it compares against the current server date?
Completely, be it with value
or compare
. The difference between value
and compare
is that value
will be used as is for comparison with format
ted date
, while compare
will be transformed (by strtotime
) into UNIX timestamp, as well as date
.
Offline
Re: etc_date : custom dates and calendars
etc wrote #303752:
AFAIK,
strtotime
is not localized, so you’d better use something like%F
, which should be ok.
Thanks. That’s what I’d read too.
Completely, be it with
value
orcompare
. The difference betweenvalue
andcompare
is thatvalue
will be used as is for comparison withformat
teddate
, whilecompare
will be transformed (bystrtotime
) into UNIX timestamp, as well asdate
.
Apologies if I’m being dense here but in case I’ve got confused here, do you mean:
- Use
value
where your date string (or from..to combo) exactly matches the format specified in theformat
attribute, and - Use
compare
where your date string first needs computing (e.g. has a+1 day
/+1 week
/+10 days
…) prior to comparison. - Use
date
attribute to compare against a specific date. If omitted, the server date (e.g. now/today) is used.
Sorry for all the questions, but it’s not so easy to test whether everything’s working correctly when testing different if-constructions against server time. I can only specify a date
attribute to compare against, then remove it again and hope it will work correctly when the time comes…
TXP Builders – finely-crafted code, design and txp
Offline
Re: etc_date : custom dates and calendars
No worries, sorry for often being terse. I have a bit forgotten myself how it works, but you got it all right: value
is not computed, but compare
is (note that date
is always computed).
Let us add two examples, for the record:
- you need to detect if tomorrow is a working day (from Monday to Friday):
<txp:etc_if_date date="tomorrow" format="%u" value="1..5" />
will computetomorrow
weekday number and check if it is between1
and5
(inclusively) - you need to detect whether Christmas is within 3 days:
<txp:etc_if_date date="25 December" format="%s" compare="-3 days..+3 days" />
will compute and compare the timestamps of25 December
and+-3 days
(from now). Here we don’t know which value+-3 days
will have, so we need to compute it first.
Offline
Re: etc_date : custom dates and calendars
Thanks, having that discussion helped me understand it better. If you like – once I’ve tested my code properly – I can contribute some examples for your plugin help.
TXP Builders – finely-crafted code, design and txp
Offline
Re: etc_date : custom dates and calendars
jakob wrote #303758:
If you like – once I’ve tested my code properly – I can contribute some examples for your plugin help.
You are welcome! Just fwiw, in 4.7 we have enhanced month
and time
attributes of article(_custom)
. It can retrieve articles posted between two (absolute or relative) dates now, though it probably does not help in your case.
Offline
#24 2017-10-08 05:40:52
- raminrahimi
- Member
- From: India
- Registered: 2013-03-19
- Posts: 278
Re: etc_date : custom dates and calendars
how to convert comment date to jalali format ?
Offline