이 문자열 날짜 “2014-07-15 06 : 55 : 14.198000 + 00 : 00″을 Swift의 NSDate로 변환하고 싶습니다.
답변
이 시도:
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = /* find out and place date format from
* http://userguide.icu-project.org/formatparse/datetime
*/
let date = dateFormatter.dateFromString(/* your_date_string */)
추가 쿼리 는 Objective-C 및 Swift에 대한 Foundation 프레임 워크 의 NSDateFormatter 및 DateFormatter 클래스를 각각 확인하십시오.
스위프트 3 이상 (Swift 4 포함)
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = /* date_format_you_want_in_string from
* http://userguide.icu-project.org/formatparse/datetime
*/
guard let date = dateFormatter.date(from: /* your_date_string */) else {
fatalError("ERROR: Date conversion failed due to mismatched format.")
}
// use date constant here
답변
스위프트 4
import Foundation
let dateString = "2014-07-15" // change to your date format
var dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let date = dateFormatter.date(from: dateString)
println(date)
스위프트 3
import Foundation
var dateString = "2014-07-15" // change to your date format
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
var date = dateFormatter.dateFromString(dateString)
println(date)
이 코드로 할 수 있습니다.
답변
func convertDateFormatter(date: String) -> String
{
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"//this your string date format
dateFormatter.timeZone = NSTimeZone(name: "UTC")
let date = dateFormatter.dateFromString(date)
dateFormatter.dateFormat = "yyyy MMM EEEE HH:mm"///this is what you want to convert format
dateFormatter.timeZone = NSTimeZone(name: "UTC")
let timeStamp = dateFormatter.stringFromDate(date!)
return timeStamp
}
스위프트 3을 위해 업데이트되었습니다.
func convertDateFormatter(date: String) -> String
{
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"//this your string date format
dateFormatter.timeZone = NSTimeZone(name: "UTC") as TimeZone!
let date = dateFormatter.date(from: date)
dateFormatter.dateFormat = "yyyy MMM EEEE HH:mm"///this is what you want to convert format
dateFormatter.timeZone = NSTimeZone(name: "UTC") as TimeZone!
let timeStamp = dateFormatter.string(from: date!)
return timeStamp
}
답변
세부
- 스위프트 4, Xcode 9.2
- 스위프트 5, Xcode 10.2 (10E125)
해결책
import Foundation
extension DateFormatter {
convenience init (format: String) {
self.init()
dateFormat = format
locale = Locale.current
}
}
extension String {
func toDate (dateFormatter: DateFormatter) -> Date? {
return dateFormatter.date(from: self)
}
func toDateString (dateFormatter: DateFormatter, outputFormat: String) -> String? {
guard let date = toDate(dateFormatter: dateFormatter) else { return nil }
return DateFormatter(format: outputFormat).string(from: date)
}
}
extension Date {
func toString (dateFormatter: DateFormatter) -> String? {
return dateFormatter.string(from: self)
}
}
용법
var dateString = "14.01.2017T14:54:00"
let dateFormatter = DateFormatter(format: "dd.MM.yyyy'T'HH:mm:ss")
let date = Date()
print("original String with date: \(dateString)")
print("date String() to Date(): \(dateString.toDate(dateFormatter: dateFormatter)!)")
print("date String() to formated date String(): \(dateString.toDateString(dateFormatter: dateFormatter, outputFormat: "dd MMMM")!)")
let dateFormatter2 = DateFormatter(format: "dd MMM HH:mm")
print("format Date(): \(date.toString(dateFormatter: dateFormatter2)!)")
결과
추가 정보
답변
문자열을 날짜로 자주 구문 분석해야 할 경우 기능을 확장으로 옮길 수 있습니다. sharedCode.swift 파일을 만들고 내 확장명을 거기에 넣었습니다.
extension String
{
func toDateTime() -> NSDate
{
//Create Date Formatter
let dateFormatter = NSDateFormatter()
//Specify Format of String to Parse
dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss.SSSSxxx"
//Parse into NSDate
let dateFromString : NSDate = dateFormatter.dateFromString(self)!
//Return Parsed Date
return dateFromString
}
}
그런 다음 문자열을 NSDate로 변환하려면 다음과 같이 작성할 수 있습니다.
var myDate = myDateString.toDateTime()
답변
스위프트 3
func stringToDate(_ str: String)->Date{
let formatter = DateFormatter()
formatter.dateFormat="yyyy-MM-dd hh:mm:ss Z"
return formatter.date(from: str)!
}
func dateToString(_ str: Date)->String{
var dateFormatter = DateFormatter()
dateFormatter.timeStyle=DateFormatter.Style.short
return dateFormatter.string(from: str)
}
답변
이 품질 보증 페이지의 코드 조각은 “거꾸로되어 있습니다”…
애플이 가장 먼저 언급 한 것은 포맷터를 캐시한다는 것입니다.
이 작업을 수행하는 방법을 정확히 알려주는 Apple doco 링크 :
효율성을위한 캐시 포맷터
날짜 포맷터를 만드는 것은 저렴한 작업이 아닙니다. … 단일 인스턴스 캐시 …
글로벌 사용 …
let df : DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
return formatter
}()
그런 다음 어디서나 해당 포맷터를 사용하십시오.
let s = df.string(from: someDate)
또는
let d = df.date(from: someString)
또는 DateFormatter에서 다른 많은 편리한 방법 중 하나를 사용하십시오.
그렇게 간단합니다.
(String에서 확장을 작성하면 코드가 완전히 거꾸로되어 있습니다. dateFormatter 호출을 사용할 수 없습니다!)
일반적으로 “formatForClient” “formatForPubNub” “formatForDisplayOnInvoiceScreen”등과 같은 몇 가지 전역이 있습니다.
![](http://daplus.net/wp-content/uploads/2023/04/coupang_part-e1630022808943-2.png)