2016-07-25 24 views
14

Tôi gặp sự cố với NSDate trong một hàm. Về cơ bản, định dạng không hoạt động và tôi cần một bộ mắt khác để xem tôi đang làm gì sai.Định dạng ngày không hoạt động trong Swift 3

Code:

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

Kết quả:

convertedDate: 25 Tháng Bảy năm 2016
dateField.stringValue: 7/25/16

+0

theo trang web này mọi thứ đều ok http://nsdateformatter.com/ –

+1

dateField của bạn là gì? Trình định dạng có vẻ đúng. – WeiJay

+0

Trường ngày (có thể là gì) có thể yêu cầu một số định dạng cụ thể. – Sulthan

Trả lời

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

Điều đó có vẻ tuyệt vời. Tôi đã thử trong một bản demo và có vẻ như nó hoạt động. Tôi sẽ thử trong dự án của mình, nhưng tôi sẽ đánh dấu đây là một giải pháp. Cảm ơn! –

+0

Ngoài ra, bạn có thể làm tương tự cho NSDate qua 'NSDate(). ToString()' và 'extension NSDate {...}' – ozata

5

Đây là những gì tôi cố gắng trên sân chơi và nó hoạt động.

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 

duy nhất khác nhau là tôi thay đổi để NSDateFormatter và thay vì dateFormatter.string tôi có dateFormatter.stringFromDate.

enter image description here

Cậu vô tình đặt một số giá trị trong storyboard hoặc xib rằng bạn có NSTextField?

+0

Xin chào, trong sân chơi của bạn, dateField là một chuỗi, không phải là NSTextField –

+1

Được rồi, tôi đã cập nhật sân chơi cho OSX và cũng là dateField đến NSTextField. Nó vẫn hoạt động. –

+2

dateFormatter.string (từ: currentDate as Date) là Swift 3. Tôi đánh giá cao sự giúp đỡ của bạn mặc dù –

8

mở rộng để có được chuỗi chống lại định dạng ngày

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

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

Vấn đề tôi đã không xóa các ứng dụng từ điện thoại của tôi trước khi tái cài đặt và thử nghiệm. Mã đã hoạt động trong trình mô phỏng nhưng không hoạt động trên điện thoại. Hy vọng điều này sẽ giúp

Các vấn đề liên quan