2017-07-20 41 views
0

我使用dateformatter轉換字符串和日期類型之間的日期,以通過UIDatePicker輸入日期。當視圖加載時,如果存在日期的已保存字符串,則將其放入日期文本字段(並正確輸入)。當dateformatter將字符串轉換爲日期時,它會返回錯誤的日期。 (上年始終十二月20ish。)日期格式化程序從字符串轉換爲日期時減去一年並改變日期

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!)! 
    } 
} 

將返回:

保存日期字符串:1977年6月7日 保存日期轉換爲日期:1976年12月19日06: 00:00 +0000 日期轉換回字符串:1976年12月19日

,如果我堅持跑步,它讓減去一年,改變了一天setDatePicker功能。

保存日期字符串:1976年12月19日保存 日期轉換成日期:1975年12月21日6點00分00秒0000 日期轉換回字符串:1975年12月21日

保存日期字符串:1975年12月21日 保存日期轉換爲日期:1974年12月22日06:00:00 +0000 日期轉換回字符串:1974年12月22日

等等

編輯:只注意到它週期之間的日期加1日期,直到它擊中25,然後返回到19.

回答

0

將您的格式字符串更改爲:「MM/dd/yyyy」,它應該作爲書面。

Unicode Technical Standard #35 Locale Data Markup Language中的資金「Y」指的是年份轉換髮生在星期邊界的「年份周」日曆。對於大多數應用程序,您需要小寫「y」,它是指標準數字日曆年。

相關問題