One domain where this happens is project planning back from a fixed end date. 
The most well-known of these would be rocket launches: “T minus 10 seconds” is 
exactly a negative time interval from an end date.

That being said, it’s a fairly uncommon use case and I wouldn’t change the API 
to support it on an equivalent basis with normal forward date intervals. A 
separate specific initializer for it might be useful, though.

        - Greg

> On Jun 20, 2016, at 4:12 PM, Tony Parker via swift-corelibs-dev 
> <swift-corelibs-dev@swift.org> wrote:
> 
> Hi Dave,
> 
> We had some extensive discussion about this ourselves, but we couldn’t come 
> up with a compelling use case for a negative time interval. Can you describe 
> how you wanted to use it?
> 
> - Tony
> 
>> On Jun 17, 2016, at 2:01 PM, Dave Lyon via swift-corelibs-dev 
>> <swift-corelibs-dev@swift.org <mailto:swift-corelibs-dev@swift.org>> wrote:
>> 
>> In attempting to use the new DateInterval value type to improve some 
>> existing code, I ran in to an issue where DateIntervals cannot be "reverse" 
>> intervals, which is contrary to how TimeInterval works, and somewhat 
>> confusing.
>> 
>> I would propose that the DateInterval value type should be able to be 
>> properly initialized with any TimeInterval, as a reference date and time 
>> interval are all that is actually required in order to construct a 
>> DateInterval properly.
>> 
>> The simplest solution might be to change the `startDate:interval:` 
>> initializer to one allows for negative time intervals, such as:
>> 
>> public init(withInterval: TimeInterval, fromDate: Date) { 
>>     self.start = Date(timeInterval: interval, since: fromDate)
>>     self.duration = abs(interval)
>> }
>> 
>> I believe in general it is preferable to avoid preconditions that require a 
>> subset of a given input type (in this case, that TimeInterval be positive or 
>> 0), and would prefer to see an API where invalid values are properly 
>> converted from the given input to the documented output. E.g. the old “Be 
>> generous with input, strict with output” idea.
>> 
>> I hope this is the right place to bring this up, but if not I’m happy to 
>> move the conversation to Radar or elsewhere.
>> 
>> Thanks!
>> 
>> _______________________________________________
>> swift-corelibs-dev mailing list
>> swift-corelibs-dev@swift.org <mailto:swift-corelibs-dev@swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-corelibs-dev
> 
> _______________________________________________
> swift-corelibs-dev mailing list
> swift-corelibs-dev@swift.org
> https://lists.swift.org/mailman/listinfo/swift-corelibs-dev

_______________________________________________
swift-corelibs-dev mailing list
swift-corelibs-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-corelibs-dev

Reply via email to