Какая разница? Оба возвращают объект Date.
Когда следует использовать какой?
let dateConstructor = Date()
let dateProp = Date.now
print(dateConstructor) // 2024-07-15 14:10:58 +0000
print(dateProp) // 2024-07-15 14:10:58 +0000
Нет никакого «должен».
Date.now
является более поздним дополнением к языку (полагаю, оно было введено в iOS 15) и имеет то преимущество для людей, что вы таким образом говорите то, что имеете в виду (вместо того, чтобы полагаться на «сюрприз», который Date()
означает дата-время на момент создания экземпляра). Это было введено именно по этой причине; он просто заполняет дыру в языке — и действительно, большинство из нас уже определили Date.now
в расширении, чтобы заполнить эту дыру, и Apple просто сделала это официально.
Поэтому я рекомендую использовать Date.now
, если вам не нужна поддержка более ранней версии iOS. Но все равно это полные синонимы. Я сомневаюсь, что Date()
когда-либо устареет, поэтому они, вероятно, будут продолжать существовать бок о бок.
Ваш ответ делает все совершенно чистым. Большое спасибо.