convert yyyymmdd to days from another date (now)

255 views
Skip to first unread message

Dave

unread,
Nov 25, 2019, 12:22:54 AM11/25/19
to TiddlyWiki
I have this list filter to list tiddlers due in Nov and Dec
<$list filter="[field:due/^2019(1|2)/]+[!sort[due]]">
<$link to={{!!title}}><$view field="title"/></$link> - <$view field="due"/><br>
</$list>

that gives something like this

some other event - 20191227
Christmas - 20191225
some event - 20191220
Haircut - 20191203
vets - 20191125
do registration - 20191101
refill hydrocollator - 20191028
Put words in rm - 120191017
research windows den - 20191005

In each of these tiddlers there's a field "due" with the yyyymmdd formatted date.

I also have a tiddler "mynow" with today's date in the same format.

If the months are the same, I can just subtract the numbers, e.g. with something like this
 <<calc !!due -  by:mynow!!mynow>> days


using Tobibeer's macro, but if they're different months, 20191201-20191130 does not equal "1"

Is there a method that can do this?  I've seen similar topics here, but nothing so far seems to answer this particular problem.

Thanks,
- Dave

TonyM

unread,
Nov 25, 2019, 2:10:43 AM11/25/19
to TiddlyWiki
Dave,

Dates are quite complex, centuries with missing leap days and more. You need to make use of special date handling widgets and operators to do this correctly for all but the simplest comparison. The days operator is one of these, but other plugins exist to support this, eg Date Picker.

Personally I like to timestamp a field with now, say the weekly-review field, because I did it, then have a seperate list widget use the days operator to list all tiddlers with the weekly-review field older than 7 days, meaning it was not done this week.

Now you can think there is another way, but this advice comes from me spending weeks of developing date handling in tiddlywiki so unless you use more advanced date functions in say evans formulae plugin I recommend you try and wrap your head around this conceptual somersault. I believe you will be rewarded in the long run and any other approach may make your head hurt.

Regards
Tony

Dave

unread,
Nov 26, 2019, 5:35:33 PM11/26/19
to TiddlyWiki
Ok, thanks Tony for your input.

Seeing as I use Bob, apparently you can do things with bash scripts (I'm on linux).  Maybe I'll look into that 

If I get a solution that way I'll post back on this thread..


- Dave

TonyM

unread,
Nov 26, 2019, 5:59:47 PM11/26/19
to TiddlyWiki
Dave,

As per my reply I recommend against that because you make your solution Operating system dependant. You will not find it easy to move it to another device or host and you can only share with a subset of users.

Feel free to ask more questions about my suggested/recommended approach.

Let me restate;
Now you can think there is another way, but this advice comes from me spending weeks of developing date handling in tiddlywiki so unless you use more advanced date functions in say evans formulae plugin I recommend you try and wrap your head around this conceptual somersault. I believe you will be rewarded in the long run and any other approach may make your head hurt.

Regards
Tony

Jed Carty

unread,
Nov 26, 2019, 6:53:14 PM11/26/19
to TiddlyWiki
if you know any JavaScript it wouldn't take long to just use JavaScript date functions and have that handle the weirdness that comes with them.

TonyM

unread,
Nov 26, 2019, 7:59:39 PM11/26/19
to TiddlyWiki
Post Script;

I am suggesting you keep dates in the TiddlyWiki Serial number format and use the View widget to display in other ways as desired. By selecting the date range using the days operator in the list widget, you keep the logic in the list process and avoid converting dates unnecessarily and thus the challenge of maintaining valid date formats.

Regards
Tony

Dave

unread,
Nov 27, 2019, 2:27:38 PM11/27/19
to TiddlyWiki
okay, so I managed to get this javascript running:
function daydiff() { 
var date1 = new Date("7/13/2010");
var date2 = new Date("12/15/2010");
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
return diffDays
console.log(daydiff()) 

I put that in a myscript.js, and at the terminal ran "node myscript.js" and it spit out "156" on the next line.

How would that translate into TW5?


Jed Carty

unread,
Nov 27, 2019, 3:34:51 PM11/27/19
to TiddlyWiki
I think that an example is going to be better than anything I could say, here are some of the date things I made before, they don't match what you are asking for but they should show how to make the javascript work in tiddlywiki.

Mark S.

unread,
Nov 27, 2019, 3:38:52 PM11/27/19
to TiddlyWiki
BTW, if you wanted to date manipulations without JS, with the help of Mat and others, we came up with these below. The
problem with the date filters in TW, is that they don't form a complete kit of the things you would want to do with dates.

\define g(y,m,d,offset:"0")
<$set name=m value={{{ [<__m__>add[9]remainder[12]] }}}>
<$set name=y value={{{ [<m>divide[10]floor[]negate[]add<__y__>] }}} >
<$set name=y4 value={{{ [<y>divide[4]floor[]] }}}>
<$set name=y100 value={{{ [<y>divide[100]floor[]] }}}>
<$set name=y400 value={{{ [<y>divide[400]floor[]] }}}>
<$set name=m306 value={{{ [<m>multiply[306]add[5]divide[10]floor[]] }}}>
<$set name=result value={{{ [[365]multiply<y>add<y4>subtract<y100>add<y400>add<m306>add[$d$]add[$offset$]subtract[1]] }}} >
<<result>>
</$set></$set></$set></$set></$set></$set></$set>
\end


\define d(g)
<$set name=daysperyear value="365.2425">
<!-- y = (10000*g + 14780)/3652425 -->
<$set name=y value={{{ [[10000]multiply<__g__>add[14780]divide[3652425]floor[]] }}}>
<!-- ddd = g - (365*y + y/4 - y/100 + y/400) -->
<$set name=y4 value={{{ [<y>divide[4]floor[]] }}}>
<$set name=y100 value={{{ [<y>divide[100]floor[]] }}}>
<$set name=y400 value={{{ [<y>divide[400]floor[]] }}}>
<$set name=dddtest value={{{ [[365]multiply<y>add<y4>subtract<y100>add<y400>negate[]add<__g__>] }}} >
<$set name=prioryear value={{{ [<y>subtract[1]] }}} >
<$set name=y value={{{ [<dddtest>prefix[-]then<prioryear>] [<dddtest>!prefix[-]then<y>] }}} >
<$set name=ddd value={{{ [[365]multiply<y>add<y4>subtract<y100>add<y400>negate[]add<__g__>] }}} >
<!-- mi = (100*ddd + 52)/3060 -->
<$set name=mi value={{{ [[100]multiply<ddd>add[52]divide[3060]floor[]] }}} >
<!-- mm = (mi + 2)%12 + 1 -->
<$set name=mm value={{{ [<mi>add[2]remainder[12]add[1]] }}} >
<!-- y = y + (mi + 2)/12 -->
<$set name=y value={{{ [<mi>add[2]divide[12]floor[]add<y>] }}} >
<!-- dd= ddd - (mi*306 + 5)/10 + 1 -->
<$set name=dd value={{{ [<mi>multiply[306]add[5]divide[10]floor[]negate[]add<ddd>add[1]] }}} >
<<y>>, <<mm>>, <<dd>> <br/>
</$set></$set></$set></$set></$set></$set></$set></$set></$set></$set></$set></$set></$set>
\end

\define daysfrom(y,m,d,o)
<$wikify name=future text="<<g $y$ $m$ $d$ $o$>>">
<$macrocall $name="d" g=<<future>>/>
</
$wikify>
\end

Days from: <<daysfrom 2019 10 21 11>>


Dave

unread,
Nov 27, 2019, 11:47:44 PM11/27/19
to TiddlyWiki
Thank you Jed and Mark.  

I'll try some copy pasta and post back if I get something to work :) 

Dave

unread,
Nov 28, 2019, 12:34:24 AM11/28/19
to TiddlyWiki
Jed:  I finally figured out that your day-diff macro does what I need, i.e. I can do this
<<day-diff 2019 11 27 2020 02 14>> days

to get the number of days between those dates,


but I can't figure out the macrocall to do the same using field contents:
<$macrocall $name="day-diff" param1={{!!due2}} param2={{mynow!!mynow2}}/> days

I don't know what to call the parameters in the macro so I can use my field based dates.

Is this doable with this type of macro?

TonyM

unread,
Nov 28, 2019, 1:26:31 AM11/28/19
to TiddlyWiki
Dave,

Search for day-diff using advanced search and see if you can find where it is defined, this may give you the list of parameter names to use, you may see them in a 
\define day-dif(parameter names)

Or a Jave script list of variable names.

Teach a man to fish...

Regards
Tony

Jed Carty

unread,
Nov 28, 2019, 4:26:33 AM11/28/19
to TiddlyWiki
Dave,

I am at a computer now so I can give a more reasonable answer than before.

The day-diff macro takes the date split up into year month and day input separately, it can't take a YYYYMMDD string like you are describing. You can try to split them up using a sequence of filters, but I think that just replacing the code in the macro with yours is going to be simpler and give you exactly what you want.

Anyway, the tables show the input parameters for each of the macros, so year1 is the starting year and year2 is the ending year, it gives year1-year2 in the output. The day and month inputs are the same with day1 and month1 being the start and day2 and month2 the end.

Modifying the macro to work with your function is less difficult than it probably seems, but it took a lot of trial and error for me to figure that out. To keep you from having to spend so much time on it here is how you could modify the day-diff.js tiddler to work with your code, or with any other javascript macro:


1. Change the second line so that the title is something else, otherwise it will overwrite the same tiddler and probably cause confusion if you share it.
2. Change the description, if your macro is going to do something different, at the moment the description is the part that says 'Takes two dates and returns their difference in days', it can be as long as you want it to be but it must have the emptyline above it. I am not certain it needs the empty line below but it may.
3. Change the line exports.name = "day-diff"; so that day-diff is whatever name you want to give the macro, this is what you use the call the macro either as <<day-diff.... or in <$macro-call $name=day-diff....
4. Change the export.params = [...] so that the array is an array of objects, one per input to your function, in the same format as they already are, ie {name: parameterName}
5. Change the exports.run = function ... so that the function is your function. It should have the same inputs as listed in the export.params array lists.

The javascript in the macro can be as complex as you want, and you can define multiple functions, the one that is listed in the exports.run line is the one that gets run.

The function should return a string that is whatever you need the result of the macro to be.

As a warning, while you can make the macro change the state of the wiki by changing values in tiddler fields it is generally not a good idea. A macro gets evaluated every time it is rendered and if evaluating the macro changes a widget or tiddler that causes the macro call to be re-rendered you end up with an infinite loop or other unexpected behaviour.

And to answer your other question about the parameter names, they are whatever you give in the exports.params array. So you have <$macro-call $name=day-diff year1=1098 year2=2012/> or <<day-diff year1:1098 year2:2012>>

Dave

unread,
Nov 28, 2019, 6:59:51 PM11/28/19
to TiddlyWiki
Thanks again to both of you, and especially Jed for that "how to make a javascript macro" tutorial.

Because I'm super lazy I changed my date format to have individual year, month and day fields, so now it works via your original macro with this:

<$macrocall $name=day-diff  year1={{mynow!!year}} month1={{mynow!!month}} day1={{mynow!!day}} year2={{!!duey}} month2={{!!duem}} day2={{!!dued}}/>


Dave

unread,
Nov 29, 2019, 3:56:50 PM11/29/19
to tiddl...@googlegroups.com
Once again Jed's right and I should have known better: I can't get the datepicker widget to spit out the date into 3 fields, so now I'm editing Jed's code:

Here's what I think should work but doesn't:

/*\
title: $:/inmysocks/macros/day-diff2.js
type: application/javascript
module-type: macro


Takes two dates and returns their difference in days

\*/
(function(){

/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";

/*
Information about this macro
*/


exports
.name = "day-diff2";

exports
.params = [
       
{name: "mydate1"},
       
{name: "mydate2"}
];

/*
Run the macro
*/

exports
.run = function(mydate1, mydate2) {
       
//Make each date object.
       
var date1 = new Date(mydate1);
       
var date2 = new Date(mydate2);

       
//Find difference in milliseconds.
       
var elapsed = date2.getTime()-date1.getTime();

       
//Number of milliseconds in a day.
       
var dayMS = 86400000;

       
//Convert milliseconds to year months and days
       
var days_diff = Math.floor(elapsed/dayMS);
       
       
var result = days_diff;

       
return result;
};

})();

When I write bash scripts my first attempts are always wrong, and then I test things line by line at the terminal to look at the errors and eventually can get it to work.

How do you do that in this case?  Is there such a thing as a "javascript terminal" I can test things with?


Merci! 
- Dave

ps, I can get mydate1 and 2 to be in any date format, e.g. 2019-11-29 or 2019/11/29 or whatever

Jed Carty

unread,
Nov 29, 2019, 4:34:36 PM11/29/19
to TiddlyWiki
Your code works, I just missed two things.

You have to make sure that the type field of the tiddler is set to application/javascript and you need to add a field called module-type with the value macro.

Also you have to save and reload your wiki for the javascript macro to be available. It is a safety thing for tiddlywiki.

And yes, in most browsers there is a javascript console you can use. In Firefox it is in the Tools menu -> Web Developer -> Web Console
In safari you have to have developer tools enabled then it is 'Show Javascript Console' in the Develop menu.

I don't know how to access it in chrome or edge.

Dave

unread,
Nov 29, 2019, 5:05:41 PM11/29/19
to TiddlyWiki
Hey, you're right it works!!!! (yay)

I'd already done those 2 fields but never thought of the reload


Thank you!

Dave

unread,
Dec 1, 2019, 2:41:12 PM12/1/19
to TiddlyWiki
okay, I'm trying to get the best of both worlds, i.e. using this method (using yyyy-mm-dd to count days) and using the days operator (which requires yyyymmdd format), so I need to use yyyymmdd format in my "due" field, but convert it to a yyyy-mm-dd format within this jsmacro.

I though this should work:
/*\
title: $:/inmysocks/macros/day-diff2.js
type: application/javascript
module-type: macro

Takes two dates and returns their difference in days

\*/
(function(){

/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";

/*
Information about this macro
*/

exports.name = "day-diff2";

exports.params = [
{name: "duedate"}
];

/*
Run the macro
*/
exports.run = function(duedate) {
//Make each date object.
var date1 = new Date();
var mydate = new Date(duedate);
var year = mydate.substring(0,4);
var month = mydate.substring(4,6);
var day = mydate.substring(6,8);
var date2 = year + '-' + month + '-' + day;

//Find difference in milliseconds.
var elapsed = date2.getTime()-date1.getTime();

//Number of milliseconds in a day.
var dayMS = 86400000; 

//Convert milliseconds to year months and days
var days_diff = Math.floor(elapsed/dayMS);
var result = days_diff;

return date2;
};

})();

but I get this error: Uncaught TypeError: mydate.substring is not a function

I tried using "mydate".substring(0,4); and ''mydate''.substring(0,4);  after googling the error

but that's not working either.

I realise asking for help on this is pushing the boundaries here as its not strictly Tiddlywiki now.  Maybe I should look for a javascript forum, but I'm  not sure where javascript ends and tiddlywiki begins...

thanks

Jed Carty

unread,
Dec 1, 2019, 2:54:11 PM12/1/19
to TiddlyWiki
Javascript date objects don't work that way. Dates are a special class that take care of all of the weirdness that comes with date handling (aside from timezones, nothing seems to help with timezones).

change so you use this:

var year = mydate.getUTCFullYear()
var month = mydate.getUTCMonth() 
var day = mydate.getUTCDate()


This is part of what tiddlywiki uses to create the timestamps it uses.

In the code you show there isn't anything making date2 into a date object, you can use this:

var date2 = new Date(year, month, day)

Something that always causes trouble is that month is 0-based, so 0 is January.

Dave

unread,
Dec 1, 2019, 5:03:42 PM12/1/19
to TiddlyWiki
Thanks, there are no errors now, but I'm getting a blank result.  So I tried to troubleshoot by having it spit out just the variable "year" and that was blank too.

exports.run = function(duedate) {
//Make each date object.
var date1 = new Date();
var mydate = new Date(duedate);
var year = mydate.getUTCFullYear();
var month = mydate.getUTCMonth();
var day = mydate.getUTCDate();
var date2 = new Date(year, month, day);

//Find difference in milliseconds.
var elapsed = date2.getTime()-date1.getTime();

//Number of milliseconds in a day.
var dayMS = 86400000; 

//Convert milliseconds to year months and days
var days_diff = Math.floor(elapsed/dayMS);
var result = days_diff;

return year;
};

Any suggestions?  I would have expected a return of "2020" as the tiddler I tested it in has field "duedate" of "20200214"


and I can replace this   
var d = new Date("July 21, 1983 01:15:00");

with this  
var d = new Date("2020-02-14");

and that works, but when I replace it with this  (which is the format of my duedate field)
var d = new Date("20200214");

it says NaN

is that maybe the source of my problems?

Dave

unread,
Dec 1, 2019, 7:30:43 PM12/1/19
to TiddlyWiki
Nevermind - I figured it out.  this is what ended up working (thanks to your comment about the months)

/*\
title: $:/inmysocks/macros/day-diff2.js
type: application/javascript
module-type: macro

Takes two dates and returns their difference in days

\*/
(function(){

/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";

/*
Information about this macro
*/

exports.name = "day-diff2";

exports.params = [
{name: "duedate"}
];

/*
Run the macro
*/
exports.run = function(duedate) {
//Make each date object.
var date1 = new Date();
var d = duedate;
var year = d.substring(0, 4);
var month = d.substring(4, 6);
var month2 = month - 1;
var day = d.substring(6, 8);
var date2 = new Date(year, month2, day);



//Find difference in milliseconds.
var elapsed = date2.getTime()-date1.getTime();

//Number of milliseconds in a day.
var dayMS = 86400000; 

//Convert milliseconds to year months and days
var days_diff = Math.floor(elapsed/dayMS);
var result = days_diff;

return result;
};

})();


TonyM

unread,
Dec 1, 2019, 9:27:00 PM12/1/19
to tiddl...@googlegroups.com
Dave,

I marked it complete for you, however I am playing with wikitext solutions to support dates, and update the documentation.

Once again my frustration that we can't format variables using the viewWidget or something else. Because to place a value in a tiddler or field needs a trigger, and the viewWidget does not accept variables as its input.

Starting with these simple macros. Note you can wrap them in a set variable of date-field.

There main function was to pull part of a date time from a date-field, rather than using the verbose view Widget. Such partial dates could be passed into other macros using the macrocall widget.

EDITED to fix errors and give examples
\define YYYY(fieldname)
<$set name=date-field value=<<date-field>> emptyValue="$fieldname$">
<$set name=date-field value=<<date-field>> emptyValue="created">
<$view field=<<date-field>> format="date" template="YYYY"/>
</$set></$set>
\end
\define 0MM(fieldname)
<$set name=date-field value=<<date-field>> emptyValue="$fieldname$">
<$set name=date-field value=<<date-field>> emptyValue="created">
<$view field=<<date-field>> format="date" template="0MM"/>
</$set></$set>
\end
\define 0DD(fieldname)
<$set name=date-field value=<<date-field>> emptyValue="$fieldname$">
<$set name=date-field value=<<date-field>> emptyValue="created">
<$view field=<<date-field>> format="date" template="0DD"/>
</$set></$set>
\end
\define 0hh(fieldname)
<$set name=date-field value=<<date-field>> emptyValue="$fieldname$">
<$set name=date-field value=<<date-field>> emptyValue="created">
<$view field=<<date-field>> format="date" template="0hh"/>
</$set></$set>
\end
\define 0mm(fieldname)
<$set name=date-field value=<<date-field>> emptyValue="$fieldname$">
<$set name=date-field value=<<date-field>> emptyValue="created">
<$view field=<<date-field>> format="date" template="0mm"/>
</$set></$set>
\end
\define 0ss(fieldname)
<$set name=date-field value=<<date-field>> emptyValue="$fieldname$">
<$set name=date-field value=<<date-field>> emptyValue="created">
<$view field=<<date-field>> format="date" template="0ss"/>
</$set></$set>
\end
\define 0XXX(fieldname)
<$set name=date-field value=<<date-field>> emptyValue="$fieldname$">
<$set name=date-field value=<<date-field>> emptyValue="created">
<$view field=<<date-field>> format="date" template="0XXX"/>
</$set></$set>
\end

;Examples
:Defaut to created on current tiddler {{!!created}}
:YYYY=<<YYYY>>
:0MM=<<0MM>>
:0DD=<<0DD>> 
:0hh=<<0hh>>
:0mm=<<0mm>>
:0ss=<<0ss>>
:0XXX=<<0XXX>>

;Default field override to modified {{!!modified}}
:<<0DD modified>>/<<0MM modified>>/<<YYYY modified>> at <<0hh modified>>:<<0mm modified>>

;Set a variable as the fieldname set a fieldname a-date-field with value 20180105
:Note this is a partial serial number and returns only what is in the date field.
<$set name=date-field value="a-date-field">

:YYYY=<<YYYY>>
:0MM=<<0MM>>
:0DD=<<0DD>> 
:0hh=<<0hh>>
:0mm=<<0mm>>
:0ss=<<0ss>>
:0XXX=<<0XXX>>
</$set>

You can wrap the macros in a set widget setting date-field to the fieldname you want to refer to.

Also this is a Work in progress
Date time macro Syntax
<<date-time [template] [date-field]>>
<$macrocall $name=date-time template=[value] date-field=[value]>
Where template, date-field or value are optional
date-field defaults to created or uses a variable 'date-field' or the value provided in the macro execution
template defaults to Now! YYYY-0MM-0DD 0hh:0mm:0ss Local time, Set in $:/config/now-format
template can be set any valid DateFormat
Examples of using the date time macro
<<date-time>> > true Now!
<<date-time "Year made YYYY">> > Year made 2019 Tiddler created date used
<<date-time "Hour changed 0hh" modified>> > Hour changed 12 Tiddler modified date used
<$set name-date-field value=my-date-field>
code <
<YYYY>> <<0MM>> and more code
</$set>

The code I am working on another parameter driven one (almost complete)
EDITED with Correction and examples
\define date-time(template date-field)
<$set name=date-field value=<<date-field>> emptyValue="$date-field$"> 
<$set name=date-field value=<<date-field>> emptyValue="created">
<$macrocall $name=return-date-time template=<<template>>/>
</$set></$set></$set>
\end
\define return-date-time(template)
<$view field=<<date-field>> format="date" template="$template$"/>
\end

<<date-time "YYYY-0MM-0DD hh:0mm">>
<<date-time "Modified YYYY-0MM-0DD at hh:0mm" modified>>


Regards
Tony

Dave

unread,
Dec 2, 2019, 1:45:55 AM12/2/19
to TiddlyWiki
That looks cool, do you have any more examples of it in use in a TW somewhere?  I pasted all that in a tiddler but don't quite get how they work

TonyM

unread,
Dec 3, 2019, 6:12:06 PM12/3/19
to TiddlyWiki
Dave,

Whos reply are you referring to here?


That looks cool, do you have any more examples of it in use in a TW somewhere?  I pasted all that in a tiddler but don't quite get how they work

Tony 

Dave

unread,
Dec 3, 2019, 6:42:47 PM12/3/19
to TiddlyWiki
You (Tony), all those macros, including the date-time one.  I can understand how it works partially, but an example wiki would be beneficial to get all the use cases you have in mind.

But no hurry - as you say its "almost complete"

TonyM

unread,
Dec 3, 2019, 9:26:44 PM12/3/19
to TiddlyWiki
Dave,

So Sorry, There was an error in my reply, I copied the draft not the final result, I will edit the reply and post an update here with examples soon.

Tony

TonyM

unread,
Dec 3, 2019, 9:43:17 PM12/3/19
to tiddl...@googlegroups.com
Fixed and examples, paste into a tiddler
On Wednesday, December 4, 2019 at 10:42:47 AM UTC+11, Dave wrote:

TonyM

unread,
Dec 3, 2019, 10:01:08 PM12/3/19
to TiddlyWiki
Dave,

I also Updated 

\define date-time(template date-field)
<$set name=template value="$template$" emptyValue="""<$macrocall $name="now" format={{$:/config/now-format}} />""" >

<$set name=date-field value=<<date-field>> emptyValue="$date-field$">
<$set name=date-field value=<<date-field>> emptyValue="created">
<$macrocall $name=return-date-time template=<<template>>/>
</
$set></$set></$set>
\end
\define return-date-time(template)
<$view field=<<date-field>> format="date" template="$template$"/>
\end



$
:/config/now-format example = hh:0mm



<<date-time "YYYY-0MM-0DD hh:0mm">>

<<date-time "Modified YYYY-0MM-0DD at hh:0mm" modified>>

:Can also set variable date-field

It is missing the desired result that when no parameters are given it provides Now time.

Regards
Tony


On Wednesday, December 4, 2019 at 10:42:47 AM UTC+11, Dave wrote:
Reply all
Reply to author
Forward
0 new messages