2016-07-25 26 views
14

Mam problem z NSDate w funkcji. Zasadniczo formatowanie nie działa i potrzebuję innego zestawu oczu, aby zobaczyć, co robię źle.Formatowanie daty nie działa w Swift 3

Kod:

@IBOutlet weak var dateField: NSTextField! 

let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "MMMM dd yyyy" 
let currentDate = NSDate() 

convertedDateString = dateFormatter.string(from:currentDate as Date) 
dateField.stringValue = convertedDateString as String 

print("convertedDate: ", convertedDateString) 
print("dateField.stringValue: ", dateField.stringValue) 

Wynik:

convertedDate: 25 lipca 2016
dateField.stringValue: 25.07.16

+0

zgodnie z tą stroną wszystko jest ok http://nsdateformatter.com/ –

+1

jaka jest twoja dataField? Formater wydaje się odpowiedni. – WeiJay

+0

Pole daty (cokolwiek to jest) prawdopodobnie wymaga określonego formatu. – Sulthan

Odpowiedz

29
Date().toString() // convert date to string with userdefined format. 

extension Date { 
     func toString() -> String { 
      let dateFormatter = DateFormatter() 
      dateFormatter.dateFormat = "MMMM dd yyyy" 
      return dateFormatter.string(from: self) 
     } 
    } 
+0

To wygląda świetnie. Próbowałem w wersji demo i wygląda na to, że działa. Spróbuję w moim projekcie, ale oznaczy to jako rozwiązanie. Dzięki! –

+0

Możesz również zrobić to samo dla NSDate poprzez 'NSDate(). ToString()' i 'rozszerzenie NSDate {...}' – ozata

5

To co próbuję na plac zabaw i to działa.

import Foundation 

let dateFormatter = NSDateFormatter() 

dateFormatter.dateFormat = "MMMM dd yyyy" 
let currentDate = NSDate() 

let convertedDateString = dateFormatter.stringFromDate(currentDate) 
var dateField:NSTextField = NSTextField() 
dateField.stringValue = convertedDateString as String 

print(convertedDateString) //July 25 2016 
print(dateField.stringValue) //July 25 2016 

Jedyna inna było to, że zmieni się NSDateFormatter i zamiast dateFormatter.string mam dateFormatter.stringFromDate.

enter image description here

Czy przypadkowo ustawić jakąś wartość w serii ujęć lub XIb że masz NSTextField?

+0

Witam, na twoim placu zabaw dataField to ciąg, a nie NSTextField –

+1

OK, zaktualizowałem plac zabaw dla OSX, a także dateField na NSTextField. Nadal działa. –

+2

the dateFormatter.string (from: currentDate as Date) to Swift 3. Doceniam twoją pomoc przez –

8

Extension uzyskania ciąg przeciwko formatów daty

extension Date { 
     func toString(format: String) -> String { 
      let dateFormatter = DateFormatter() 
      dateFormatter.dateFormat = format 
      return dateFormatter.string(from: self) 
     } 
    } 

Date().toString(format:"H:mm") 
0

Problem miałem nie było usuwanie aplikacji z mojego telefonu przed ponownym zainstalowaniem i testowania. Kod działał w symulatorze, ale nie w telefonie. Mam nadzieję, że to pomaga