From S@Elli@on @ending from LGCGroup@com  Fri Aug  3 16:23:11 2018
From: S@Elli@on @ending from LGCGroup@com (S Ellison)
Date: Fri, 3 Aug 2018 14:23:11 +0000
Subject: [Rd] RFC: make as.difftime more consistent or convenient
In-Reply-To: <17046459260845ffaca8eaf83263c560@AUSMXMBX04.mrws.biz>
References: <9755E752-FAD8-46D5-8712-077557E583BF@dans.knaw.nl>
 <17046459260845ffaca8eaf83263c560@AUSMXMBX04.mrws.biz>
Message-ID: <e5adbf667132445bb097dbea8676a174@GBDCVPEXC08.corp.lgc-group.com>

> Thank you for your comments! But, what you wrote is known. What do you
> want to express with regard to my questions?
> 
> I wrote:
> > ? there is no appropriate format ...,
> > although "weeks" is a legitimate unit of 'difftime':
> >
> >     > as.difftime("12 w", "%...")
> >
> >     > as.difftime("12 weeks")
> >     Time difference of 12 weeks
> >
> >     1. What do you think about making the behavior of 'as.difftime' more
> >   consistent by accepting also formats for "days" and "weeks"?

as.difftime calls strptime to apply the format argument.

If I  wanted to extend the range of formats as.difftime accepts, I'd leave as.difftime alone and look at how strptime could be extended to cover the formats you envisage.

But... I wouldn?t do that either. strptime is essentially a call to an .Internal function and very likely reliant on established  C code for the already very flexible standard C function strptime, which strptime clearly mirrors intentionally. That usually makes things dangerous to tinker with in the short term and hard to maintain in the long term.

So  if you want to do something that will readily convert all combinations of things like '12 w', '12W', '12wks', '3m 2d', 1wk 2d', '18d' etc, write that as a stand-alone routine that converts those 'simple' formats directly to difftime objects and call it something like 'strpdifftime', which would allow it to be added (if it's wanted a lot) with minimal impact to existing code.

S Ellison




*******************************************************************
This email and any attachments are confidential. Any use, copying or
disclosure other than by the intended recipient is unauthorised. If 
you have received this message in error, please notify the sender 
immediately via +44(0)20 8943 7000 or notify postmaster at lgcgroup.com 
and delete this message and any copies from your computer and network. 
LGC Limited. Registered in England 2991879. 
Registered office: Queens Road, Teddington, Middlesex, TW11 0LY, UK


[Rd] RFC: make as.difftime more consistent or convenient
S Ellison