DateComponentsFormatter и .nanosecond - PullRequest
0 голосов
/ 15 февраля 2019

Итак, я использую DateComponentsFormatter в ситуации, когда мне нужно отформатировать только наносекунды данного TimeInterval.Проблема в том, что он просто не работает должным образом, или я запутываю что-то, о чем я не знаю.

Вот 3 быстрых теста, чтобы проиллюстрировать то, что я говорю.

1-й сценарий

let fooFormatter = DateComponentsFormatter()

fooFormatter.allowedUnits = [.second, .nanosecond]
fooFormatter.unitsStyle = .full
fooFormatter.collapsesLargestUnit = true
fooFormatter.allowsFractionalUnits = true

print(fooFormatter.string(from: 42.42424242424242424242424242424242))

Вывод : Optional("42 seconds").

Ожидается : поскольку это приводит к свертыванию «наибольшей единицы» - секунд вв этом случае - ожидается что-то вроде (Optional("42.42424242424242424242424242424242 * 1e^9")).

2-й сценарий

let fooFormatter = DateComponentsFormatter()

fooFormatter.allowedUnits = [.second, .nanosecond]
fooFormatter.unitsStyle = .full
fooFormatter.allowsFractionalUnits = true

print(fooFormatter.string(from: 42.42))

Вывод : Optional("42 seconds").

Ожидается : Даже не решая не свернуть .second, я ожидал что-нибудь близкое к (Optional("42 seconds 0.42 * 1e^9 nanoseconds")).

3-й сценарий

let fooFormatter = DateComponentsFormatter()
fooFormatter.allowedUnits = [.nanosecond]
fooFormatter.unitsStyle = .full
fooFormatter.allowsFractionalUnits = true

print(fooFormatter.string(from: 42.424242))

Вывод : nil.

Ожидаемый : теперь он даже не распознает TimeInterval как действительный - когда он определен как наименьшую возможную долю - и, очевидно, ожидал всего в наносекундах.

Важно отметить, что я использовал allowsFractionalUnits = true, что еще больше тревожит , потому что это поведение также не работает на выходекак указано выше (см. предполагаемое поведение здесь ).

Заранее спасибо.

1 Ответ

0 голосов
/ 15 февраля 2019

DateComponentsFormatter не поддерживает наносекунды.

См. Документацию для allowedUnits, которая не включает наносекунды.В нем говорится:

Допустимые календарные единицы:

  • year
  • month
  • weekOfMonth
  • day
  • hour
  • minute
  • second

Назначение любых других календарных единиц этомусвойство приводит к исключению.

...