2017-03-08 96 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

我希望日期类型不是日期字符串类型。感谢您的回答。我在我的问题中提到过:) –