首先确保您的日期格式匹配,我注意到您使用了"MM/dd/yyyy",但是根据您的注释和输入结构(Feb 4, 2015和2月 4, 2015),您应该使用"MMM dd, yyyy"。 接下来,您要向代码中添加dateFormatter.locale = Locale(identifier: NSLocale.current.identifier),以设置日期格式化程序对字符串的解释。您还需要确保在测试中文字符串(或任何其他区域设置字符串)时,从NSLocale.current.identifier返回的当前区域设置是正确的。(或者您可以手动设置if进行测试,我将locale设置为"zh_Hant_HK",它与"2月 4, 2015"一起工作) 最后,我删除了日历并使用变量timeIntervalSince1970替换了逻辑,该变量返回自1970年以来的秒数和该日期。然后我计算了当前时间间隔和将秒转换为年之间的差值。 下面的代码是功能性的(只需确保您测试的字符串的区域设置是正确的!) /** * @returns number of years since birthday date. returns -1 if there is an error. */func calcAge(birthday: String) -> Int { let dateFormatter = D