Swift 常用转换拓展工具-SwiftUtilityKit
Swift 常用转换工具库默认中文语境默认日期上下文zh_CN Asia/Shanghai Gregorian覆盖单位换算、日期时间、金额、百分比、颜色、字符串校验与格式化、设备与应用信息1. 安装SPM说明通过 Swift Package Manager 引入 SDK。https://github.com/snoux/SwiftUtilityKitimportSwiftUtilityKit// 在代码文件中导入 SDK2. 最简场景调用说明以下示例全部使用默认上下文不传in: cn。2.1 日期格式转换letouttry2026-03-10 08:00:00.dateString(to:.dateMinuteSlash)// 自动识别输入并输出为 yyyy/MM/dd HH:mm2.2 判断是不是昨天String 直调letreftry2026-03-10 12:00:00.date(.dateTime)// 解析参考时间letoktry2026-03-09 12:00:00.isYesterday(ref:ref)// 判断目标时间是否是参考时间的昨天2.3 判断是不是昨天Date 直调letreftry2026-03-10 12:00:00.date(.dateTime)// 解析参考时间lettargettry2026-03-09 12:00:00.date(.dateTime)// 解析目标时间letoktarget.isYesterday(ref:ref)// 直接通过 Date 扩展判断昨天2.4 判断 7 天内letreftry2026-03-10 12:00:00.date(.dateTime)// 参考时间letin7try2026-03-05 12:00:00.relative(to:ref).withinPast(7,.day)// 目标时间是否在参考时间向前 7 天范围内2.5 判断区间letinRangetry2026-03-10 08:00:00.isBetween(2026-03-10 07:00:00,and:2026-03-10 09:00:00,format:yyyy-MM-dd HH:mm:ss)// 判断字符串时间是否在区间内2.6 时间戳互转lettstry2026-03-10 08:00:00.timestamp(.dateTime)// 日期字符串转秒级时间戳lettexttry1704067200.dateStringFromTimestamp(unit:.second,format:yyyy-MM-dd HH:mm:ss)// 秒级时间戳转日期字符串2.7 金额换算letfentry12.34.convertMoney(from:.major,to:.minor,currency:.cny)// 人民币元转分 - 12342.8 百分比换算letratiotry12.5.percentToRatio()// 百分数 12.5 转比率 0.1252.9 颜色转换lethextryrgba(255,102,0,0.5).normalizedColorHex(includeAlpha:true)// 颜色字符串标准化为 hex2.10 字符串校验letphoneOK13800138000.isValidChineseMobile// 校验是否中国大陆手机号letemailOKdemoexample.com.isValidEmail// 校验邮箱格式2.11 常用字符串扩展letblank \n .isBlank// 判断是否空白字符串letencodeda bc1.urlEncoded()// URL 编码letdecodeda%20b%26c%3D1.urlDecoded()// URL 解码letb64SwiftUtilityKit.base64Encoded()// Base64 编码letrawU3dpZnRVdGlsaXR5S2l0.base64Decoded()// Base64 解码2.12 常用 Date 扩展letdtry2026-03-10 12:34:56.date(.dateTime)// 解析 Dateletstartd.startOfDay()// 当天开始时间 00:00:00letendd.endOfDay()// 当天结束时间 23:59:59letplus7d.adding(7,.day)// 日期加 7 天letsameDayd.isSameDay(as:Date())// 是否同一天2.13 设备与应用信息letsysDeviceInfo.systemVersion// 获取系统版本号letmodelDeviceInfo.modelName// 获取设备机型名称letappDeviceInfo.appVersionWithBuild// 获取当前 App 版本号 构建号letpxDeviceInfo.pixelResolutionText// 获取屏幕物理分辨率像素3. DateKit上下文与日期模式说明DateKit 统一管理“解析/格式化的语言、时区、日历”和“日期格式模式”。3.1 上下文类型DateKit.ContextAPI说明DateKit.defaultContext默认上下文zh_CN Asia/Shanghai GregorianDateKit.Context.cn中文预设上下文DateKit.Context(locale:timeZone:calendar:)自定义上下文3.2 日期模式枚举DateKit.Patterncase格式说明dateTimeyyyy-MM-dd HH:mm:ss常用秒级日期时间dateTimeSlashyyyy/MM/dd HH:mm:ss斜杠版秒级日期时间dateMinuteyyyy-MM-dd HH:mm分钟级日期时间dateMinuteSlashyyyy/MM/dd HH:mm斜杠版分钟级日期时间dateyyyy-MM-dd横杠日期dateSlashyyyy/MM/dd斜杠日期compactDateTimeyyyyMMddHHmmss紧凑日期时间compactDateyyyyMMdd紧凑日期iso8601yyyy-MM-ddTHH:mm:ssZISO8601 秒级iso8601Millisyyyy-MM-ddTHH:mm:ss.SSSZISO8601 毫秒级辅助集合DateKit.commonDatePatterns自动识别输入模式列表顺序即尝试顺序DateKit.commonDateFormats自动识别输入格式字符串列表4. String单位换算与基础转换StringConversion.swift说明当原始输入是字符串时使用这组 API 最方便。API说明convertLength(from:to:)长度换算convertWeight(from:to:)重量换算convertArea(from:to:)面积换算convertVolume(from:to:)体积换算convertTime(from:to:)时间换算compareTime(with:selfUnit:otherUnit:)比较两个时间值timeDifference(to:selfUnit:otherUnit:resultUnit:)计算两个时间值差值other - selfconvertTemperature(from:to:)温度换算convertSpeed(from:to:)速度换算convertRadix(from:to:uppercase:)字符串进制换算2…36toChineseUppercaseNumber()数字转中文大写数字toChineseUppercaseCurrency()数字转中文金额大写chineseUppercaseToDecimal()中文大写转十进制toColorRGBA()颜色字符串转 RGBAnormalizedColorHex(includeAlpha:prefixHash:)颜色字符串转标准 hexcolorToPackedInt(includeAlpha:)颜色字符串转整数颜色值5. String日期 DSLStringUtility.swift说明这是日期处理的主入口支持“明确格式”和“自动识别”两种调用风格。5.1 解析API说明date(_ format: String)按格式解析date(_ pattern: DateKit.Pattern)按内置模式解析date(_ formats: [String])按多个格式依次尝试date(_ patterns: [DateKit.Pattern])按多个模式依次尝试date(patterns:)自动识别解析5.2 格式转换API说明dateString(from:to:)String输入格式 - 输出格式dateString(from:to:)Pattern输入模式 - 输出模式dateString(to:inputFormats:)自动识别输入格式后输出dateString(to:inputPatterns:)自动识别输入模式后输出5.3 比较与差值API说明dateCompare(with:format:)比较两个日期字符串dateDistance(to:format:unit:)计算日期差值other - self5.4 时间戳API说明timestamp(_ format: String, unit:)按格式转时间戳timestamp(_ pattern: DateKit.Pattern, unit:)按模式转时间戳timestamp(unit:patterns:)自动识别后转时间戳timestampString(_ format: String, unit:scale:)转时间戳字符串dateStringFromTimestamp(unit:format:)时间戳字符串转日期字符串convertTimestamp(from:to:scale:)时间戳单位互转5.5 相对时间与区间说明relative(...)返回DateRelativeProxy中间对象它保存target reference用于继续做.isYesterday/.isToday/...等判断。API说明relative(_ format: String, to:)按格式返回相对时间判断对象relative(_ pattern: DateKit.Pattern, to:)按模式返回相对时间判断对象relative(to:patterns:)自动识别后返回相对时间判断对象isBetween(_:and:format:inclusive:)判断字符串时间是否在区间内isYesterday(_ format:ref:)显式格式判断昨天isYesterday(ref:patterns:)自动识别判断昨天isToday(_ format:ref:)显式格式判断今天isToday(ref:patterns:)自动识别判断今天isTomorrow(_ format:ref:)显式格式判断明天isTomorrow(ref:patterns:)自动识别判断明天isDayBeforeYesterday(_ format:ref:)判断前天isLastWeek(_ format:ref:)判断上周isNextWeek(_ format:ref:)判断下周isLastYear(_ format:ref:)判断去年isNextYear(_ format:ref:)判断明年5.6 字符串工具API说明trimmed()去首尾空白和换行removingWhitespacesAndNewlines()去全部空白和换行isIntegerNumber是否整数文本isDecimalNumber是否十进制数字文本digitsOnly()仅保留数字字符formattedWithGrouping(maximumFractionDigits:minimumFractionDigits:)数字千分位格式化safeSubstring(start:length:)安全截取子串isBlank是否空白字符串nilIfBlank()空白转nil否则返回 trim 后内容urlEncoded()URL 编码urlDecoded()URL 解码base64Encoded()Base64 编码UTF-8base64Decoded()Base64 解码UTF-86. Date 默认语义扩展DateUtility.swift说明业务逻辑层推荐直接用Date扩展调用更自然。API说明formatted(_:)Date格式化输出timestamp(unit:)Date转时间戳relative(to:)返回DateRelativeProxystartOfDay()获取当天开始时间endOfDay()获取当天结束时间startOfWeek()获取当周开始时间endOfWeek()获取当周结束时间startOfMonth()获取当月开始时间endOfMonth()获取当月结束时间adding(_:_:)日期加减如加 7 天isSameDay(as:)判断是否同一天isWeekend()判断是否周末days(to:)计算相差自然日天数isInRange(from:to:inclusive:)区间判断isBetween(_:and:inclusive:)区间判断别名isDayBeforeYesterday(ref:)判断前天isYesterday(ref:)判断昨天isToday(ref:)判断今天isTomorrow(ref:)判断明天isLastWeek(ref:)判断上周isNextWeek(ref:)判断下周isLastYear(ref:)判断去年isNextYear(ref:)判断明年isWithinPast(_:_:,ref:inclusive:)判断是否在参考时间向前范围内Date.fromTimestamp(_:unit:)时间戳转DateDateRelativeProxy说明是什么相对时间判断对象内部绑定target与reference何时用需要连续判断多个相对条件时减少重复传参属性isDayBeforeYesterday / isYesterday / isToday / isTomorrow / isLastWeek / isNextWeek / isLastYear / isNextYear方法matches(_:)按标签通用判断方法withinPast(_:_:,inclusive:)范围判断7. 时间戳扩展TimestampConversion.swift说明当时间戳本来就是数值类型时无需先转字符串。适用于BinaryInteger / BinaryFloatingPoint / DecimalconvertTimestamp(from:to:)时间戳单位换算toDate(unit:)时间戳转Date8. 金额换算MoneyConversion.swift MoneyConversion.swift说明仅做同币种单位换算不涉及汇率内部使用Decimal确保精度。8.1 枚举与类型CurrencyCodecny人民币usd美元eur欧元gbp英镑jpy日元MoneyUnitmajor主单位如元/美元tenth十分位单位如角minor百分位单位如分/美分CNYPartsyuan元jiao角fen分8.2 核心 APIMoneyConversion.convert(_:from:to:currency:)MoneyConversion.splitCNY(_:)MoneyConversion.mergeCNY(yuan:jiao:fen:)8.3 扩展入口String / BinaryInteger / BinaryFloatingPoint / DecimalconvertMoney(from:to:currency:)convertMoneyString(from:to:currency:scale:)DecimalsplitCNY()CNYPartstoDecimalYuan()9. 百分比换算PercentageConversion.swift PercentageConversion.swift说明支持“百分数 - 比率”双向转换。9.1 核心 APIPercentageConversion.percentToRatio(_:)PercentageConversion.ratioToPercent(_:)9.2 扩展入口StringpercentToRatio / ratioToPercent / percentToRatioString / ratioToPercentStringBinaryIntegerpercentToRatio / ratioToPercentBinaryFloatingPointpercentToRatio / ratioToPercentDecimalpercentToRatio / ratioToPercent / asPercentString10. 颜色转换SwiftUtilityKit.swift ColorPlatform.swift说明支持颜色字符串、整数、十六进制与系统颜色对象互转。10.1 ColorRGBAinit(red:green:blue:alpha:)parse(_:)fromPackedInt(_:hasAlpha:)hexString(includeAlpha:prefixHash:)packedInt(includeAlpha:)10.2 String / Integer 扩展StringtoColorRGBA / normalizedColorHex / colorToPackedIntBinaryIntegertoColorRGBA(hasAlpha:) / toColorHex(hasAlpha:prefixHash:)10.3 平台桥接ColorRGBAinit(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)fromHex(_:)cgColorinit(cgColor:)uiColorUIKitinit(uiColor:)UIKitswiftUIColorSwiftUIUIColorUIKitinit(_ color: ColorRGBA)toColorRGBA()ColorSwiftUI UIKit 桥接toColorRGBA()11. 设备与应用信息DeviceInfo.swift说明用于获取系统版本、设备机型、App 版本和屏幕分辨率等信息UIKit 平台可用。11.1 核心 APIDeviceInfo.systemName系统名称如 iOSDeviceInfo.systemVersion系统版本号DeviceInfo.modelIdentifier设备机型标识如iPhone16,2DeviceInfo.modelName设备机型名称如iPhone 15 Pro MaxDeviceInfo.appVersionApp 版本号CFBundleShortVersionStringDeviceInfo.appBuildApp 构建号CFBundleVersionDeviceInfo.appVersionWithBuild版本号 构建号如1.2.3(45)DeviceInfo.logicalResolution逻辑分辨率pointDeviceInfo.pixelResolution物理分辨率pixelDeviceInfo.logicalResolutionText逻辑分辨率文本如393x852 ptDeviceInfo.pixelResolutionText物理分辨率文本如1179x2556 pxDeviceInfo.screenScale屏幕缩放倍数DeviceInfo.nativeScale原生缩放倍数11.2 扩展 APIUIDevice.utilityModelIdentifier设备机型标识UIDevice.utilityModelName设备机型名称UIScreen.utilityPixelResolution屏幕像素分辨率11.3 机型映射维护机型映射独立维护在Sources/SwiftUtilityKit/Resources/AppleDeviceList.txt文件格式identifier|name一行一条#开头为注释未命中映射时会自动回退为原始机型标识12. 字符串校验与格式化StringValidation.swift说明用于输入合法性校验和展示脱敏。最简示例letphoneOK13800138000.isValidChineseMobile// 校验大陆手机号letemailOKdemoexample.com.isValidEmail// 校验邮箱leturlOKhttps://example.com/path?a1.isValidURL// 校验 URLletipv6OK2408:8400:9800:31d3:4ff7:f6d2:69f8:77b3.isValidIPv6// 校验 IPv6letcardOK4111111111111111.isValidBankCardNumber// 校验银行卡号LuhnletidOK11010519491231002X.isValidChineseIDCard// 校验身份证号含校验码letcardText6222021234567890123.formattedBankCardNumber()// 银行卡分组格式化letphoneText13800138000.formattedChineseMobile()// 手机号格式化为 XXX-XXXX-XXXXletphoneMask13800138000.maskedChineseMobile()// 手机号脱敏为 XXX****XXXXletidMask11010519491231002X.maskedChineseIDCard()// 身份证脱敏为 前6 **** 后412.1 校验isValidChineseMobileisValidURLisValidEmailisValidIPv6isValidBankCardNumberisValidChineseIDCard12.2 格式化与脱敏formattedBankCardNumber(separator:)formattedChineseMobile(separator:)maskedChineseMobile(mask:)maskedChineseIDCard(mask:)13. 数值扩展NumericConversion.swift说明当数据已是数值类型时直接调用数值扩展更高效。13.1 BinaryInteger单位convertLength / convertWeight / convertArea / convertVolume / convertTime / convertTemperature / convertSpeed时间关系compareTime / timeDifference进制convertRadix(to:uppercase:)中文大写toChineseUppercaseNumber / toChineseUppercaseCurrency颜色toColorRGBA / toColorHex13.2 BinaryFloatingPoint单位convertLength / convertWeight / convertArea / convertVolume / convertTime / convertTemperature / convertSpeed时间关系compareTime / timeDifference中文大写toChineseUppercaseNumber / toChineseUppercaseCurrency13.3 Decimal单位convertLength / convertWeight / convertArea / convertVolume / convertTime / convertTemperature / convertSpeed时间关系compareTime / timeDifference中文大写toChineseUppercaseNumber / toChineseUppercaseCurrency14. 单位枚举完整列表含说明14.1 LengthUnit长度picometer皮米nanometer纳米micrometer微米millimeter毫米centimeter厘米decimeter分米meter米kilometer千米nauticalMile海里mile英里furlong弗隆yard码foot英尺inch英寸li里zhang丈chi尺cun寸fen分liSmall厘hao毫lightYear光年14.2 WeightUnit重量microgram微克milligram毫克gram克kilogram千克ton吨ounce盎司pound磅stone英石jin斤liang两qian钱14.3 AreaUnit面积squareMillimeter平方毫米squareCentimeter平方厘米squareDecimeter平方分米squareMeter平方米squareKilometer平方千米hectare公顷acre英亩squareFoot平方英尺squareInch平方英寸mu亩14.4 VolumeUnit体积milliliter毫升liter升cubicMeter立方米teaspoon茶匙tablespoon汤匙cup杯pint品脱gallon加仑cubicCentimeter立方厘米cubicInch立方英寸14.5 TimeUnit时间nanosecond纳秒microsecond微秒millisecond毫秒second秒minute分钟hour小时day天week周14.6 TemperatureUnit温度celsius摄氏度fahrenheit华氏度kelvin开尔文14.7 SpeedUnit速度meterPerSecond米每秒kilometerPerHour千米每小时milePerHour英里每小时knot节footPerSecond英尺每秒15. 日期相关枚举完整列表含说明15.1 DateConversion.TimestampUnitsecond秒级时间戳如1704067200millisecond毫秒级时间戳如170406720000015.2 DateConversion.DateDifferenceUnitsecond按秒输出差值minute按分钟输出差值hour按小时输出差值day按天输出差值24 小时15.3 DateConversion.RelativeDateTagdayBeforeYesterday前天yesterday昨天today今天tomorrow明天lastWeek上周nextWeek下周lastYear去年nextYear明年16. 错误类型完整列表ConversionErrorinvalidNumber无效数字invalidBase无效进制范围invalidRadixValue进制值不合法overflow溢出invalidChineseNumeral中文数字不合法invalidColor颜色不合法invalidDate日期不合法invalidMoneyUnit币种与金额单位不匹配17. 国际化单位名称本地化localizedName(locale:)错误信息本地化ConversionError.errorDescription

相关新闻

Git管理策略与常用命令

Git管理策略与常用命令

Git下载链接 Git - Windows 安装Git图形化工具推荐 SourceTree Git 基础概念 版本控制系统 作用:记录文件历史变化,便于回溯、协作、分支开发。 分类: 集中式(SVN):所有版本数据存储在中央服务器。 …

2026/7/3 10:14:36 阅读更多 →
Flutter 组件 http_requests 适配鸿蒙 HarmonyOS 实战:极简网络请求,构建边缘端轻量级 RESTful 通讯架构

Flutter 组件 http_requests 适配鸿蒙 HarmonyOS 实战:极简网络请求,构建边缘端轻量级 RESTful 通讯架构

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net Flutter 组件 http_requests 适配鸿蒙 HarmonyOS 实战:极简网络请求,构建边缘端轻量级 RESTful 通讯架构 前言 在鸿蒙(OpenHarmony)生态迈向…

2026/7/3 16:26:32 阅读更多 →
Grafana 12.4.1 发布,有哪些新亮点?

Grafana 12.4.1 发布,有哪些新亮点?

Grafana 作为监控和可观察性的开源平台,能可视化多源数据。近日,Grafana 12.4.1 正式发布,带来功能改进与错误修复。平台简介Grafana 是监控和可观察性领域的开源平台,可将来自 Prometheus、Loki 等多个数据源的指标、日志等进行可…

2026/5/17 11:53:20 阅读更多 →

最新新闻

基于DRV8213与STM32的智能散热系统设计与实现

基于DRV8213与STM32的智能散热系统设计与实现

1. 项目概述:基于DRV8213与STM32的智能散热系统设计在汽车电子和工业嵌入式系统中,散热管理直接关系到设备可靠性和寿命。最近完成的一个车载信息娱乐系统项目中,我们采用德州仪器的DRV8213电机驱动器控制MF25060V2-1000U-A99轴流风扇&#x…

2026/7/3 23:14:14 阅读更多 →
逆向分析短视频平台a_bogus参数:从JavaScript混淆到Python复现

逆向分析短视频平台a_bogus参数:从JavaScript混淆到Python复现

1. 项目概述:从“黑盒”到“白盒”的逆向之旅最近在分析某头部短视频平台的网页端接口时,一个名为a_bogus的参数频繁出现在我的视野里。无论是请求用户主页信息、抓取评论区数据,还是搜索商品列表,这个由一长串看似随机的字符组成…

2026/7/3 23:14:14 阅读更多 →
使用Hashcat与rar2john高效恢复RAR5加密文件密码的完整指南

使用Hashcat与rar2john高效恢复RAR5加密文件密码的完整指南

1. 项目概述:当加密的RAR文件成为“数字盲盒”在数字资产管理中,我们偶尔会遇到一种令人头疼的情况:一个重要的RAR压缩包,里面装着可能是多年前的项目资料、备份的文档或者朋友分享的素材,但密码却怎么也想不起来了。这…

2026/7/3 23:14:14 阅读更多 →
解决90%的测试难题:openEuler编译器测试套件常见问题与解决方案终极指南

解决90%的测试难题:openEuler编译器测试套件常见问题与解决方案终极指南

解决90%的测试难题:openEuler编译器测试套件常见问题与解决方案终极指南 【免费下载链接】compiler-test Compiler-test repo contains functional test suites for two components: gcc and openjdk, including dejagnu, jtreg, etc 项目地址: https://gitcode.c…

2026/7/3 23:10:13 阅读更多 →
BambuStudio 编译实战

BambuStudio 编译实战

目录 strawberry安装 下载的模型地址: mkdir E:\BambuSlicer-depsbuild_win -s all -d "E:\BambuSlicer-deps" strawberry安装 strawberry-perl-5.42.2.1-64bit 运行安装:双击下载的 .msi 文件,按照安装向导的提示操作即可。建…

2026/7/3 23:08:12 阅读更多 →
STM32F765ZI与DRV8213的智能散热系统设计

STM32F765ZI与DRV8213的智能散热系统设计

1. 项目背景与核心需求解析 在汽车电子和工业控制领域,嵌入式系统的散热管理一直是个棘手问题。随着处理器性能提升和空间限制加剧,传统被动散热方案已无法满足需求。我最近参与的某车载信息娱乐系统项目就遇到了这个难题——当STM32F765ZI全速运行且环境…

2026/7/3 23:06:12 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻