You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift技术实现:如何获取照片库中指定日期区间的图片?

筛选指定日期范围的相册图片

嘿,要实现获取1月1日到5月1日的图片,只需要在你现有的PHFetchOptions里添加日期范围的谓词条件就可以啦!

修改后的完整代码:

// 1. 构造日期范围:这里以2024年为例,你可以根据需求修改年份
let calendar = Calendar.current
var startComponents = DateComponents(year: 2024, month: 1, day: 1, hour: 0, minute: 0, second: 0)
let startDate = calendar.date(from: startComponents)!

// 注意:如果要包含5月1日当天的所有图片,建议把结束日期设为5月2日0点,避免时间精度问题
var endComponents = DateComponents(year: 2024, month: 5, day: 2, hour: 0, minute: 0, second: 0)
let endDate = calendar.date(from: endComponents)!

// 2. 设置筛选选项
let options = PHFetchOptions()
options.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: true)]
// 同时过滤图片类型 + 日期范围
options.predicate = NSPredicate(format: "mediaType = %d AND creationDate >= %@ AND creationDate < %@", 
                                PHAssetMediaType.image.rawValue, 
                                startDate as CVarArg, 
                                endDate as CVarArg)

// 3. 获取符合条件的图片资源
let assets = PHAsset.fetchAssets(with: options)

关键说明:

  • 日期范围的准确性:用creationDate >= %@ AND creationDate < %@而不是<=,是因为如果直接设为5月1日23:59:59,可能会因为Date的毫秒精度漏掉部分图片,设为下一天的0点更稳妥。
  • 年份灵活调整:如果需要适配不同年份,只需要修改startComponents和endComponents里的year值即可。
  • 权限注意:确保你的App已经获取了相册访问权限,否则fetchAssets会返回空结果哦!

内容的提问来源于stack exchange,提问作者kuwhkud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:44:09