---
title: "iOS 15 format新方法"
description: "iOS 15可以直接使用.formatted 方式来格式化Date, number, collection 等数据"
url: "https://hicc.pro/p/swift/new-approach-to-formatters-in-ios-15"
author: "tyler wang"
published: "2021-07-17T16:20:43.000Z"
updated: "2023-09-29T10:39:07.000Z"
category: "Swift"
image: "https://image.hicc.pro/pro/20210718010035FhtFPO-AWHtgtolSMoDzdsbA8mYpye1I52u6jZ4r_wx7jYdgM.jpg"
lang: "zh-CN"
site: "Hipo日志"
---

# iOS 15 format新方法

## iOS 15格式化新方式

swift算语法很甜的语言了，但是iOS 15之前个格式化需要先 init 一个formatter，然后再根据配置格式化数据， 稍微有点点麻烦。

从iOS 15（macOS 12，watchOS 8……）开始，我们直接像其他面向对象语言一样，直接在数据上`.formatted`就好。

### iOS 15 Date格式化

```swift
let now = Date()
print(now.formatted())
// 2021/7/18, 12:19 AM

print(now.formatted(date: .complete, time: .omitted))
// Sunday, July 18, 2021
```
需要ISO8601 API？

```swift
let now = Date()
print(now.formatted(.iso8601.dateSeparator(.dash)))
// 2021-07-17T161944Z
```

还有更长的语法
```swift
let now = Date()
print(now.formatted(.dateTime.year().month()))
// Jul 2021

print(now.formatted(.dateTime.year(.twoDigits).month(.wide)))
// July 21
```

`.dateTime`可以设置更精确的时间，也可以让你设置地区

```swift
let now = Date()
print(now.formatted(.dateTime.locale(Locale(identifier: "cs"))))
// 18. 7. 2021 0:19
```

### number格式化

```swift
print(40.formatted(.percent))
// 40%

print(40.formatted(.currency(code: "eur")))
// ¥40.00

print(0.2948485.formatted(.number.precision(.significantDigits(2))))
// 0.29
```

可以使用`ByteCountFormatter`来格式化文件大小

```swift
print(38436483.formatted(.byteCount(style: .file, allowedUnits: .all, spellsOutZero: true, includesExactByteCount: false)))
// 38.4 MB
```

### `ListFormatter`也能`.formatted`

`ListFormatter` 也能在collection中`.formatted`使用。

```swift
let appleStuff = ["iPhone", "iPad", "Mac"]
print(appleStuff.formatted())
// iPhone, iPad, and Mac
```

![](https://image.hicc.pro/pro/20210718005439FhtFPO-AWHtgtolSMoDzdsbA8mYp3Vp6PYc327uwkR6zbaf1d.jpg)

---

更多: [What's new in Foundation](https://developer.apple.com/videos/play/wwdc2021/10109/)

[New approach to formatters in iOS 15](https://nemecek.be/blog/106/new-approach-to-formatters-in-ios-15?utm_campaign=iOS%2BDev%2BWeekly&utm_medium=email&utm_source=iOS%2BDev%2BWeekly%2BIssue%2B512)

---

原文 / Source: <https://hicc.pro/p/swift/new-approach-to-formatters-in-ios-15>
