문자열 날짜를 NSDate로 변환하려면 어떻게 해야 합니까?
"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 */)
추가 쿼리는 각각 목표-C 및 스위프트용 기초 프레임워크의 NSDateFormatter 및 DateFormatter 클래스를 확인하십시오.
스위프트 3 이상
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
편집:
대체 날짜 시간 형식 참조 https://unicode-org.github.io/icu/userguide/format_parse/datetime/
스위프트 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
}
Swift 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
}
세부 사항
- Swift 4, Xcode 9.2
- Swift 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)!)")
결과
더 많은 정보
문자열을 날짜로 자주 구문 분석해야 하는 경우 기능을 확장으로 이동할 수 있습니다.공유 Code.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)
}
이 QA 페이지의 코드 조각은 "위쪽 아래쪽"입니다.
애플이 가장 먼저 언급한 것은 당신이 당신의 포맷터를 캐시한다는 것입니다.
효율성을 위한 캐시 포맷터 날짜 포맷터를 만드는 것은 저렴한 작업이 아닙니다. ...단일 인스턴스 캐시...
전역 사용...
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" "formatForDisplayOn"송장 화면"... 등
신속한 지원 확장, 확장을 통해 기존 기능에 새로운 기능을 추가할 수 있습니다.class
,structure
,enumeration
또는protocol
유형.
새 항목을 추가할 수 있습니다.init
에 대한 기능.NSDate
객체를 사용하여 객체를 확장합니다.extension
키워드
extension NSDate
{
convenience
init(dateString:String) {
let dateStringFormatter = NSDateFormatter()
dateStringFormatter.dateFormat = "yyyyMMdd"
dateStringFormatter.locale = NSLocale(localeIdentifier: "fr_CH_POSIX")
let d = dateStringFormatter.dateFromString(dateString)!
self.init(timeInterval:0, sinceDate:d)
}
}
이제 다음을 사용하여 NSDate 개체를 시작할 수 있습니다.
let myDateObject = NSDate(dateString:"2010-12-15 06:00:00")
Swift 3 이후, 많은 NS 접두사가 삭제되었습니다.
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
/* date format string rules
* http://userguide.icu-project.org/formatparse/datetime
*/
let date = dateFormatter.date(from: dateString)
스위프트 3,4:
2가지 유용한 변환:
string(from: Date) // to convert from Date to a String
date(from: String) // to convert from String to Date
사용량: 1.
let date = Date() //gives today's date
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd.MM.yyyy"
let todaysDateInUKFormat = dateFormatter.string(from: date)
2.
let someDateInString = "23.06.2017"
var getDateFromString = dateFormatter.date(from: someDateInString)
SWIFT 3.1용
func convertDateStringToDate(longDate: String) -> String{
/* INPUT: longDate = "2017-01-27T05:00:00.000Z"
* OUTPUT: "1/26/17"
* date_format_you_want_in_string from
* http://userguide.icu-project.org/formatparse/datetime
*/
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let date = dateFormatter.date(from: longDate)
if date != nil {
let formatter = DateFormatter()
formatter.dateStyle = .short
let dateShort = formatter.string(from: date!)
return dateShort
} else {
return longDate
}
}
참고: 오류가 발생하면 원래 문자열이 반환됩니다.
Swift에서 날짜 형식 내에 문자열을 추가하기 위해 이 작업을 수행했습니다.
var dataFormatter:NSDateFormatter = NSDateFormatter()
dataFormatter.dateFormat = "dd-MMMM 'at' HH:mm a"
cell.timeStamplbl.text = dataFormatter.stringFromDate(object.createdAt)
이 일은 나에게..
import Foundation
import UIKit
//dateString = "01/07/2017"
private func parseDate(_ dateStr: String) -> String {
let simpleDateFormat = DateFormatter()
simpleDateFormat.dateFormat = "dd/MM/yyyy" //format our date String
let dateFormat = DateFormatter()
dateFormat.dateFormat = "dd 'de' MMMM 'de' yyyy" //format return
let date = simpleDateFormat.date(from: dateStr)
return dateFormat.string(from: date!)
}
당신은 이 빠른 코드를 시도할 수 있습니다.
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd/MM/yyyy"//same as strDate date formator
dateFormatter.timeZone = TimeZone(abbreviation: "GMT+0:00")//Must used if you get one day less in conversion
let convertedDateObject = dateFormatter.date(from: strDate)
아래는 swift iOS에서 사용할 수 있는 몇 가지 문자열 형식 변환 옵션입니다.
Thursday, Dec 27, 2018
format=EEEE, MMM d, yyyy
12/27/2018
format=MM/dd/yyyy
12-27-2018 09:59
format=MM-dd-yyyy HH:mm
Dec 27, 9:59 AM
format=MMM d, h:mm a
December 2018
format=MMMM yyyy
Dec 27, 2018
format=MMM d, yyyy
Thu, 27 Dec 2018 09:59:19 +0000
format=E, d MMM yyyy HH:mm:ss Z
2018-12-27T09:59:19+0000
format=yyyy-MM-dd'T'HH:mm:ssZ
27.12.18
format=dd.MM.yy
09:59:19.815
format=HH:mm:ss.SSS
SWIFT 5, Xcode 11.0
원하는 "dateString" 및 "dateFormat" 패스 형식으로 (문자열의 날짜)를 전달합니다.형식을 선택하려면 NDateFormatter 웹 사이트를 사용합니다.
func getDateFrom(dateString: String, dateFormat: String) -> Date? {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = dateFormat
dateFormatter.locale = Locale(identifier: "en_US")
guard let date = dateFormatter.date(from: dateString) else {return nil}
return date
}
Swift: iOS
if we have string, convert it to NSDate,
var dataString = profileValue["dob"] as String
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy"
// convert string into date
let dateValue:NSDate? = dateFormatter.dateFromString(dataString)
if you have and date picker parse date like this
// to avoid any nil value
if let isDate = dateValue {
self.datePicker.date = isDate
}
import Foundation
let now : String = "2014-07-16 03:03:34 PDT"
var date : NSDate
var dateFormatter : NSDateFormatter
date = dateFormatter.dateFromString(now)
date // $R6: __NSDate = 2014-07-16 03:03:34 PDT
언급URL : https://stackoverflow.com/questions/24777496/how-can-i-convert-string-date-to-nsdate
'source' 카테고리의 다른 글
SQL Azure 데이터베이스의 이름을 바꾸시겠습니까? (0) | 2023.06.01 |
---|---|
레이크 과제 내에서 레이크 과제를 실행하는 방법은 무엇입니까? (0) | 2023.06.01 |
Azure Blob 스토리지 컨텐츠를 백업하는 가장 좋은 방법은 무엇입니까? (0) | 2023.05.27 |
MsSQL에서 간단한 '찾기 및 바꾸기'를 수행하려면 어떻게 해야 합니까? (0) | 2023.05.27 |
SQL의 이중 콜론 '::' 표기법 (0) | 2023.05.27 |