2016-07-25 5 views
14

У меня проблема с NSDate в функции. По сути, форматирование не работает, и мне нужен другой набор глаз, чтобы увидеть, что я делаю неправильно.Форматирование даты не работает в Swift 3

Код:

@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) 

Результат:

convertedDate: 25 июля 2016
dateField.stringValue: 7/25/16

+0

в соответствии с этим сайтом все в порядке http://nsdateformatter.com/ –

+1

какая у вас дата? Форматирование кажется правильным. – WeiJay

+0

Поле даты (независимо от того, что есть), вероятно, требует определенного формата. – Sulthan

ответ

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

Это выглядит великолепно. Я пробовал в демо и, похоже, работает. Я попробую в своем проекте, но я отмечу это как решение. Благодаря! –

+0

Также вы можете сделать то же самое для NSDate через 'NSDate(). ToString()' и 'extension NSDate {...}' – ozata

5

Это то, что я стараюсь на игровая площадка и работает.

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 

только отличается в том, что я изменить в NSDateFormatter и вместо dateFormatter.string я есть dateFormatter.stringFromDate.

enter image description here

Вы случайно установили какое-то значение в раскадровке или XIb, что у Вас есть NSTextField?

+0

Привет, на вашей игровой площадке dateField - это строка, а не NSTextField –

+1

Хорошо, я обновил игровую площадку для OSX, а также dateField для NSTextField. Он все еще работает. –

+2

dateFormatter.string (from: currentDate as Date) является Swift 3. Я ценю, что вы помогли, хотя –

8

Расширение для получения строки от форматов даты

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

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

вопрос я был не удалить приложение с телефона перед повторной установкой и тестированием. Код работал в симуляторе, но не на телефоне. Надеюсь, это поможет

Смежные вопросы