首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >格式化程序将年份减去一年,并在从字符串转换到日期时更改日期

格式化程序将年份减去一年,并在从字符串转换到日期时更改日期
EN

Stack Overflow用户
提问于 2017-07-20 01:36:44
回答 1查看 600关注 0票数 2

我使用日期格式化程序在字符串和日期类型之间转换日期,以便通过UIDatePicker输入日期。当视图加载时,如果保存的日期字符串存在,则将其放入日期文本字段(并正确输入)。当日期格式化程序将字符串转换为日期时,它返回错误的日期。(总是前一年的12月20日左右。)

代码语言:javascript
复制
let df = DateFormatter()
df.dateFormat = "MM/dd/YYYY"

func setDatePickerDate() {
    if dobText.text != "" {
        print("\n\nSaved date as string: \(dobText.text!)")
        let testDate = df.date(from:dobText.text!)
        print("Saved date converted to date: \(testDate!)")
        print("Date converted back to string: \(df.string(from: testDate!))")
        dobPicker?.date = df.date(from: dobText.text!)!
    }
}

返回:

保存日期为字符串: 06/07/1977保存日期转换为日期: 1976-12-19 06:00:00 +0000转换回字符串: 12/19/1976

如果我继续运行setDatePicker函数,它会不断地减去一年,并改变日期。

保存日期为字符串: 12/19/1976保存日期转换为日期: 1975-12-21 06:00 +0000转换回字符串: 12/21/1975 保存日期为字符串: 12/21/1975保存日期转换为日期: 1974-12-22 06:00:00 +0000

等。

编辑:只是注意到它在19-25天之间循环,将1添加到日期,直到它达到25,然后返回到19。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-20 01:47:21

将您的格式字符串更改为:"MM/dd/yyyy“,它应该以书面方式工作。

Unicode技术标准#35地区数据标记语言中的大写"Y“是指基于”一年中的一周“的日历,其中年转换发生在一周的边界上。对于大多数应用程序,您需要小写"y",它指的是标准的数字历年。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45203696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档