이 문자열을 "2016-04-14T10:44:00+0000"
로 변환 NSDate
하고 연도, 월, 일, 시간 만 유지 하는 방법은 무엇입니까?
T
그것의 중간에 정말 내가 날짜로 작업 할 때 사용하고있는 무슨 오프가 발생합니다.
이 문자열을 "2016-04-14T10:44:00+0000"
로 변환 NSDate
하고 연도, 월, 일, 시간 만 유지 하는 방법은 무엇입니까?
T
그것의 중간에 정말 내가 날짜로 작업 할 때 사용하고있는 무슨 오프가 발생합니다.
답변:
ISO8601 문자열을 날짜로 변환
let isoDate = "2016-04-14T10:44:00+0000"
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX") // set locale to reliable US_POSIX
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
let date = dateFormatter.date(from:isoDate)!
날짜에서 년, 월, 일 및 시간의 날짜 구성 요소 가져 오기
let calendar = Calendar.current
let components = calendar.dateComponents([.year, .month, .day, .hour], from: date)
마지막으로 새로운 Date
객체를 생성하고 분과 초를 제거하십시오
let finalDate = calendar.date(from:components)
ISO8601DateFormatter
iOS 10 / macOS 12에 도입 된 편의 포맷터도 고려하십시오 .
let isoDate = "2016-04-14T10:44:00+0000"
let dateFormatter = ISO8601DateFormatter()
let date = dateFormatter.date(from:isoDate)!
.hour
다음 날짜 형식을 시도하십시오.
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ssZZZ"
let date = dateFormatter. dateFromString (strDate)
도움이 되길 바랍니다 ..
스위프트 4.1 :
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ssZZZ"
let date = dateFormatter.date(from: strDate)
Swift 4.1에서는 다음을 수행 할 수 있습니다.
func getDate() -> Date? {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
dateFormatter.timeZone = TimeZone.current
dateFormatter.locale = Locale.current
return dateFormatter.date(from: "2015-04-01T11:42:00") // replace Date String
}
스위프트 3.0-4.2
import Foundation
extension String {
func toDate(withFormat format: String = "yyyy-MM-dd HH:mm:ss")-> Date?{
let dateFormatter = DateFormatter()
dateFormatter.timeZone = TimeZone(identifier: "Asia/Tehran")
dateFormatter.locale = Locale(identifier: "fa-IR")
dateFormatter.calendar = Calendar(identifier: .gregorian)
dateFormatter.dateFormat = format
let date = dateFormatter.date(from: self)
return date
}
}
extension Date {
func toString(withFormat format: String = "EEEE ، d MMMM yyyy") -> String {
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "fa-IR")
dateFormatter.timeZone = TimeZone(identifier: "Asia/Tehran")
dateFormatter.calendar = Calendar(identifier: .persian)
dateFormatter.dateFormat = format
let str = dateFormatter.string(from: self)
return str
}
}
안녕 당신은 별도의 T 형식이 있고 원하는대로 변환
// create dateFormatter with UTC time format
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
dateFormatter.timeZone = NSTimeZone(name: "UTC")
let date = dateFormatter.dateFromString("2015-04-01T11:42:00")
// change to a readable time format and change to local time zone
dateFormatter.dateFormat = "EEE, MMM d, yyyy - h:mm a"
dateFormatter.timeZone = NSTimeZone.localTimeZone()
let timeStamp = dateFormatter.stringFromDate(date!)
당신 dateformate
과 당신의 날짜를 전달 하면 Year,month,day,hour
됩니다. 추가 정보
func GetOnlyDateMonthYearFromFullDate(currentDateFormate:NSString , conVertFormate:NSString , convertDate:NSString ) -> NSString
{
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = currentDateFormate as String
let formatter = NSDateFormatter()
formatter.dateFormat = Key_DATE_FORMATE as String
let finalDate = formatter.dateFromString(convertDate as String)
formatter.dateFormat = conVertFormate as String
let dateString = formatter.stringFromDate(finalDate!)
return dateString
}
연도 받기
let Year = self.GetOnlyDateMonthYearFromFullDate("yyyy-MM-dd'T'HH:mm:ssZ", conVertFormate: "YYYY", convertDate: "2016-04-14T10:44:00+0000") as String
달 가져 오기
let month = self.GetOnlyDateMonthYearFromFullDate("yyyy-MM-dd'T'HH:mm:ssZ", conVertFormate: "MM", convertDate: "2016-04-14T10:44:00+0000") as String
하루를
let day = self.GetOnlyDateMonthYearFromFullDate("yyyy-MM-dd'T'HH:mm:ssZ", conVertFormate: "dd", convertDate: "2016-04-14T10:44:00+0000") as String
시간 받기
let hour = self.GetOnlyDateMonthYearFromFullDate("yyyy-MM-dd'T'HH:mm:ssZ", conVertFormate: "hh", convertDate: "2016-04-14T10:44:00+0000") as String
글로벌 기능을하다
func convertDateFormat(inputDate: String) -> String {
let olDateFormatter = DateFormatter()
olDateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
let oldDate = olDateFormatter.date(from: inputDate)
let convertDateFormatter = DateFormatter()
convertDateFormatter.dateFormat = "MMM dd yyyy h:mm a"
return convertDateFormatter.string(from: oldDate!)
}
함수를 호출하고 그 안에 값을 전달
get_OutputStr = convertDateFormat(inputDate: "2019-03-30T05:30:00+0000")
그리고 여기에 출력
Feb 25 2020 4:51 PM
swift4에서
var Msg_Date_ = "2019-03-30T05:30:00+0000"
let dateFormatterGet = DateFormatter()
dateFormatterGet.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
let dateFormatterPrint = DateFormatter()
dateFormatterPrint.dateFormat = "MMM dd yyyy h:mm a" //"MMM d, h:mm a" for Sep 12, 2:11 PM
let datee = dateFormatterGet.date(from: Msg_Date_)
Msg_Date_ = dateFormatterPrint.string(from: datee ?? Date())
print(Msg_Date_)
// 출력 :-2019 년 3 월 30 일 05:30 오후
1 단계 만> JSON 또는 dataSource에서 문자열 값을 가져옵니다.
2 단계> 지역 변수를 생성하고 할당합니다.
let startDate = CurrentDashBoard.startdate
3 단계> DateFormatter 인스턴스를 만듭니다.
let dateFormatter = DateFormatter()
4 단계> dateFormatter에서 dateFormat을 호출하고 저장된 날짜 dataType을 제공하십시오.
dateFormatter.dateFormat = "MM-dd-yyyy HH:mm:ss"("may be String formate")
5 단계> 변환 할 로컬 변수를이 변수에 지정하십시오.
let dateFromStringstartDate : NSDate = dateFormatter.date(from: startDate)! as NSDate
6 단계> 다음 코드로 필요한 날짜 형식을 제공하십시오.
dateFormatter.dateFormat = "MM/dd/yyyy HH:mm:ss"
6 단계> 레이블 / 텍스트에 지정
cell.lblStartDate.text = String(format: "%@", strstartDate)
암호:
let startDate = CurrentDashBoard.startdate let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy HH:mm:ss" let dateFromStringstartDate :
NSDate = dateFormatter.date(from: startDate)! as NSDate
dateFormatter.dateFormat = "MM/dd/yyyy HH:mm:ss"
let strstartDate = dateFormatter.string(from: dateFromStringstartDate as Date)
나는이 형식에도 열중했다.
아래 솔루션을 참조하십시오.
당신의 등 또는 다른 소스에서 온 문자열 :
let isoDate = "2020-05-06 20:00:00-03"
날짜 형식을 식별하십시오
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd' 'HH:mm:ssZ"
let date = dateFormatter.date(from:isoDate)!
날짜를 Date ()로 지정 했으므로 formatDate.string을 사용하여 원하는 형식으로 변경할 수 있습니다.
let formatDate = DateFormatter()
formatDate.dateFormat = "dd/MM/yyyy HH:mm"
let drawDate = formatDate.string(from: date)
print(drawDate)
산출:
06/05/2020 20:00
이를 위해 ISO8601 구문 분석 라이브러리를 사용하십시오. 문자열을 인코딩하는 방법이 너무 많습니다. 특정 형식에 의존하지 말고 항상 같은 것을 보내는 서버에 의존하지 마십시오. 문제는 마지막에 'Z'로 시작하며 모든 표준을 통해 확장됩니다. 구문 분석 라이브러리는 모든 경우를 처리하고 항상 안전한 변환을 제공하지만 고정 형식 문자열은 나중에 실패 할 수 있습니다.
이 라이브러리 중 하나를 사용할 수 있습니다. 그들은 또한 CococaPods에서 사용할 수 있습니다 :
https://github.com/boredzo/iso-8601-date-formatter/
https://github.com/malcommac/SwiftDate
구현을 살펴보십시오. 그것들은 모두 수백 줄의 길이입니다.
질문과 관련하여 NSDateComponents를 사용하여 날짜에서 날짜 구성 요소를 가져올 수 있습니다. 웹 사이트의 예는 귀하의 사례를 정확하게 다룹니다.
https://developer.apple.com/documentation/foundation/nscalendar/1414841-components?language=objc
날짜를 변환하면 시간대가 고려됩니다. NSCalendar의 '로케일'을 명시 적으로 설정할 수 있습니다.