title: Swift dates are equivalent under 30 nanoseconds
body: <p>I noticed that when comparing two instances of a Swift <code>Date</code> with <code>==</code>, they qualify as the same date when the difference in <code>DateComponents.nanoseconds</code> is less than 30. For example:</p>
  
  <pre><code>let calendar = Calendar(identifier: .gregorian)
  let startComps = DateComponents(year: 2017, month: 1, day: 1, hour: 0, minute: 0, second: 0, nanosecond: 0)
  let endComps = DateComponents(year: 2017, month: 1, day: 1, hour: 0, minute: 0, second: 0, nanosecond: 29)
  
  let startDate = calendar.date(from: startComps)!
  let endDate = calendar.date(from: endComps)!
  print(startDate == endDate)
  //prints true, changing 29 to 30 prints false
  </code></pre>
  
  <p>The behavior is the same if comparing with <code>startDate.compare(endDate) == .orderedSame</code>. I couldn't find any mention of this in the docs or headers. Is there a logical reason for 30 nanoseconds to be the cutoff for equality?</p>