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

Swift中Calendar的veryShortWeekdaySymbols如何设置从周一开始显示

问题原因

Calendar的veryShortWeekdaySymbols、shortWeekdaySymbols、weekdaySymbols返回值顺序是固定的,永远以周日作为第一个元素,和firstWeekday属性的设置无关。firstWeekday只会影响日历的周计算逻辑(比如周数统计、日期范围匹配),不会修改符号数组的默认排序。

实现方案

你可以根据设置的firstWeekday值,对符号数组做手动切片重排即可,参考代码如下:

var calendar = Calendar.current
// 设置周首日为周一(系统规则:1代表周日,2代表周一,以此类推)
calendar.firstWeekday = 2

let originSymbols = calendar.veryShortWeekdaySymbols
// 从firstWeekday对应的索引位置拆分数组,重新拼接
let startIndex = originSymbols.index(originSymbols.startIndex, offsetBy: calendar.firstWeekday - 1)
let sortedSymbols = Array(originSymbols[startIndex...] + originSymbols[..<startIndex])

print(sortedSymbols)
// 输出结果:["M", "T", "W", "T", "F", "S", "S"]

补充说明

  • 该重排逻辑对shortWeekdaySymbols、完整weekdaySymbols同样适用,替换对应属性即可。
  • 如果需要适配不同地区的默认周首日规则,直接读取系统当前Calendar的firstWeekday属性做偏移计算即可,无需手动写死偏移量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:36:03