Question
I need to use something like %DATE% in a topic template but instead of the entire date I only want "year". The docs do not indicate if %DATE% can return a hard text "year" - trying it did not result in anything expected. Right now I am trying to munge something together with %CALC%.
Thanks
Environment
| TWiki version: |
TWikiRelease01Feb2003 |
| TWiki plugins: |
DefaultPlugin, ActionTrackerPlugin, BeautifierPlugin, EditTablePlugin, ExplicitNumberingPlugin, FindElsewherePlugin, InterwikiPlugin, PowerEditPlugin, QuickCalendarPlugin, SessionPlugin, SmiliesPlugin, SpreadSheetPlugin, TWikiDrawPlugin, TablePlugin, TopicVarsPlugin, TreePlugin |
| Server OS: |
Unix (solaris) |
| Web server: |
Apache/1.3.26 Server at twiki.sps.mot.com Port 80 |
| Perl version: |
5.6.0 |
| Client OS: |
WindowsXPPro |
| Web Browser: |
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5) Gecko/20031007 |
--
SteveRJones - 09 Feb 2004
Answer
I guess I kind of answered my own question but it took leveraging the
SpreadSheetPlugin features. In my topic template I have:
<!-- Calculate only the year based on when this topic was created
%CALC{"$SET(YEAR, $REPLACE(%DATE%, 1, $EVAL($LENGTH(%DATE%)-4),) )"}%
-->
<!-- Check it -->
CURRENTDATE = %DATE% %BR%
CURRENTYEAR = %CALC{"$GET(YEAR)"}%
The template hardcodes the entire date, vis-a-vis when the topic is created, via %DATE%. I then used %CALC% to extract just the year. Does anyone have a more elegant way of doing this?
Will not have
%GMTIME{"$year"}% the same effect?
CURRENTYEAR = 2012
--
FranzJosefSilli - 11 Feb 2004
The problem is that putting %GMTIME{"$year"}% into a topic template results in %GMTIME{"$year"}% being put into the new topic. Using %DATE% in a topic template results in a hard date string in the new topic. So my example above, if the topic were created today the new topic would render as:
<!-- Calculate only the year based on when this topic was created
%CALC{"$SET(YEAR, $REPLACE(11 Feb 2004, 1, $EVAL($LENGTH(11 Feb 2004)-4),) )"}%
-->
--
SteveRJones - 11 Feb 2004
Well, now I understand what you're trying. Can't the same thing you do be done by using
%CALC{"$FORMATGMTIME( $TIME( %DATE% ), $year )"}%
%DATE% will be expanded to the full date string when creating the new topic based on the template and
CALC formats that string into the desired year. --> no need to store it temporarily, just read the whole manual.
--
FranzJosefSilli - 11 Feb 2004
Yes, I suppose that would work too, and so might:
<!-- Calculate only the year based on when this topic was created
%CALC{"$REPLACE(%DATE%, 1, $EVAL($LENGTH(%DATE%)-4),) )"}%
-->
I guess the real issue then becomes, which way is more expensive? Having 25
%CALC{"$FORMATGMTIME( $TIME( 2012-05-28 ), $year )"}% statements in a topic
OR
having 1
%CALC{"$SET(YEAR, $FORMATGMTIME( $TIME( 2012-05-28 ), $year ) )"}% statement
and
25
%CALC{"$GET(YEAR)"}% statements? It may not make a difference. I typically use variables just to assist in readability and debugging. But in essence I was looking for something like %DATE{$year}% that would generate the hard text year.
Thanks for the feedback, I think I'll file this as ANSWERED.
--
SteveRJones - 11 Feb 2004