2017-03-08 115 views
1

我得到UTC的當前日期,並將其轉換爲本地時區,結果以字符串形式出現。UTC日期到當前TimeZone字符串和結果StringDate到當前TimeZone日期

現在,我將該結果字符串日期轉換爲具有相同本地時區的日期,但它給出了UTC的日期。

下面是我使用的代碼:在

08-03-2017 16:41:12 +0530 

唯一的類型日期不是String類型

print("current date :\(Date())") //current date : 2017-03-08 11:11:12 +0000 

    let dateFormatter = DateFormatter() 
    dateFormatter.timeZone = TimeZone.current 
    dateFormatter.dateFormat = "dd-MM-yyyy HH:mm:ss Z" 
    let localDate : String = dateFormatter.string(from: Date()) 

    print("localDate date :\(localDate)") // localDate date: 08-03-2017 16:41:12 +0530 

    let dateFormatter1 = DateFormatter() 
    dateFormatter1.timeZone = TimeZone.current 
    dateFormatter1.dateFormat = "dd-MM-yyyy HH:mm:ss Z" 
    let dateCurrent = dateFormatter1.date(from: localDate)! 

    print("dateCurrent date :\(dateCurrent)") // dateCurrent date: 2017-03-08 11:11:12 +0000 

dateCurrent

我想要的。

我哪裏出錯了?

+0

請問您是否希望在日期上添加更多清晰度? –

回答

1

感謝大家你的答案,

我挖出來並找到解決方案。我在這裏分享代碼。

let currentDate = Date() 

    let CurrentTimeZone: TimeZone = TimeZone(abbreviation: "UTC")! 
    let SystemTimeZone: TimeZone = TimeZone.current 

    let currentGMTOffset: Int = CurrentTimeZone.secondsFromGMT(for: currentDate) 
    let SystemGMTOffset: Int = SystemTimeZone.secondsFromGMT(for: currentDate) 

    let interval: TimeInterval = Double(SystemGMTOffset) - Double(currentGMTOffset) 

    let todayDate: Date = Date(timeInterval: interval, since: currentDate) 

    print(" Today Date : \(todayDate)") 
0

這就是Date對象的工作方式。您只需保留日期對象,直到需要將其輸出給用戶或API,此時您可以將其轉換爲適當時區中的字符串。

A Date對象本質上只是用一些幫助器方法來處理它的unix時間戳。

0

試試這個,希望它可以幫助

let date: String = "dd-MM-yyyy HH:mm:ss Z" 
    var dateArr = date.components(separatedBy: " ") 
    let dateCurrent = (dateArr [0]) 
    print(dateCurrent) 
0

問題與dateFormatter。這裏是我的代碼來CONVER UTC到地方和地方到UTC:

convertUTCtoLocal(strUTCDate: "09-03-2017 03:54:00") 
    convertLocalToUTC(strUTCDate: "09-03-2017 09:24:00") 

轉換UTC到本地

func convertUTCtoLocal(strUTCDate: String){ 
    let dateFormater : DateFormatter = DateFormatter(); 
    dateFormater.timeZone = TimeZone(abbreviation: "UTC") 
    dateFormater.dateFormat = "dd-MM-yyyy HH:mm:ss" 

    let dateFromString = dateFormater.date(from: strUTCDate) 

    dateFormater.timeZone = NSTimeZone.local as TimeZone! 
    dateFormater.dateFormat = "dd-MM-yyyy HH:mm:ss" 

    let localData = dateFormater.string(from: dateFromString!) 
    print("Your local date is \(localData)")   
} 

轉換地方爲UTC

func convertLocalToUTC(strUTCDate: String){ 
    let dateFormater : DateFormatter = DateFormatter(); 
    dateFormater.dateFormat = "dd-MM-yyyy HH:mm:ss" 
    dateFormater.timeZone = NSTimeZone.local as TimeZone! 

    let dateFromString = dateFormater.date(from: strUTCDate) 

    dateFormater.timeZone = NSTimeZone(abbreviation: "UTC") as TimeZone!; 
    dateFormater.dateFormat = "dd-MM-yyyy HH:mm:ss" 

    let localData = dateFormater.string(from: dateFromString!) 
    print("Your UTC date is \(localData)")   
} 
+0

我希望日期類型不是日期字符串類型。感謝您的回答。我在我的問題中提到過:) –